Rails 将上传的 PDF 文件预览,总是预览不成功,谁能帮忙看下这段代码有什么问题

waitingaminute · April 18, 2014 · Last by jxs471494539 replied at April 24, 2014 · 5110 hits
content = ""
file = @attachment.file_path
preview_file = "#{RAILS_ROOT}#{file}"
File.open("#{preview_file}", "rb") do |f|
  f.each_line { |line| content += line }
end
logger.info "---------------file_name:"+file_name.to_s
send_data(content,:filename => file_name,:type => 'image/jpg',:disposition => 'inline')
Unknow user #1 April 23, 2014

@waitingaminute PDF 文件如果是从服务上拿到的,而不是本地的则不需要 send_data(一般不会是存在本地项目中),也页面上可以直接像显示图片一样去做,点击后,浏览器可以直接显示 PDF 文件。

我这样是可以在线预览的:

send_file(@pdf_file,
              filename: "#{@certificate.report_no}.pdf",
              type: "application/pdf",
              disposition: "inline")

详细链接请看: https://github.com/vincentjiang/jade/blob/master/app/controllers/certificates_controller.rb

希望对楼主有帮助

#1 楼 @TREE 我看代码,上传的 pdf 被存到项目里的一个文件夹了,取的时候上边代码里的 content 里也有内容,就是不知道为什么不能预览

#2 楼 @jxs471494539 谢谢,我待会看,学习一下

Unknow user #5 April 24, 2014

@waitingaminute 如果保存在项目中的文件就按照 #2 楼 @jxs471494539 的方法,没有问题的。常规来说,文件都会单独保存在文件服务器上的,获取更直接,不用在项目中走系统内存。

#5 楼 @TREE 嗯,是的,我的例子是读取 database 即时生成 PDF 文件,是会占有内存的。

You need to Sign in before reply, if you don't have an account, please Sign up first.