2012-08-11 70 views
5

我有一個讀取文件內容併爲其編制索引的應用程序。我將它們存儲在磁盤本身中,但現在我正在使用Amazon S3,因此以下方法不再適用。如何使用CarrierWave從S3獲取真實文件

它是這樣的:

def perform(docId) 
    @document = Document.find(docId) 
    if @document.file? 

     #You should't create a new version 
     @document.versionless do |doc| 
     @document.file_content = Cloudoc::Extractor.new.extract(@document.file.file) 
     @document.save 
     end 

    end 
    end 

@document.file返回FileUploader,並且doc.file.file返回CarrierWave::Storage::Fog::File類。

我怎樣才能得到真實的文件?

回答

9

調用@document.file.read會從Carrierwave的S3中獲取文件的內容。

+1

Jacob,來自carrierwave google group用'open(@ document.file.url)解決的問題'too – 2012-08-14 11:08:42

+1

@ document.file.read可能更好,因爲無論使用哪種文件存儲,它都可以工作,也就是說它可以與本地文件系統和S3。 – 2014-05-06 10:45:24

+0

.read並不適用於我們(我們正在使用cloudinary和carrierwave結合使用) – Tibastral 2015-07-15 12:00:17

相關問題