2013-11-03 70 views
1

我最近将Rails 2.3应用程序升级到Rails 4.该应用程序的一个功能是上传PDF文件,然后将其存储在数据库中。也可以下载这些PDF文件。但是,PDF阅读器无法显示一些(约20%)下载的PDF文件(“PDF文档已损坏”)。奇怪的是,我可以使用Rails 2.3从同一个数据库下载相同的PDF文件,并且一切正常。这导致我假设数据库中的PDF文件没有被破坏,但是当Rails 4提供这些文件时会出现问题。Ruby on Rails 4破坏PDF文件

这是发送PDF文件的相应代码:

def show_pdf_document 
    send_data @files.pdf.binary_data, :filename => @files.pdf.filename, :type =>@files.pdf.filetype 
end 

也许它是一个编码的问题?

更新:问题似乎没有直接关系到Rails 4.我有一个独角兽/ nginx设置。当我直接连接到独角兽工作者,它没有任何问题。这似乎是破坏PDF文件的nginx。

+0

什么操作系统? 'filetype'字段中有什么? – Gene

+0

数据库是在Ubuntu 10.04上运行的Postgresql以及Rails系统。 Filetype字段是“application/pdf” – Albert

+0

谢谢。 PostgreSQL中字段'binary_data'的类型是什么?什么是语言环境?这比'send_data'更可能是数据库连接问题。如果该字段是“文本”而不​​是“字节”,则表示拥有它。 – Gene

回答

0

这个问题与Unicorn和Nginx有关。但是,我没有找到问题的确切来源。在这种情况下,最实际的解决方案是用Passenger/Nginx替换Unicorn/Nginx。现在就像魅力一样。