2013-11-03 71 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。現在就像魅力一樣。