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

waitingaminute · 2014年04月18日 · 最后由 jxs471494539 回复于 2014年04月24日 · 5110 次阅读
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')
匿名 #1 2014年04月23日

@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 谢谢,我待会看,学习一下

匿名 #5 2014年04月24日

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

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号