2010-02-17 45 views
8

回形針默認嘗試處理每個圖像文件以生成縮略圖。但它也試圖用pdf文件來完成,這可能是非常耗時的任務。我試着在谷歌上找到一個解決方案,但它改變了Paperclip方法。如何在Paperclip中禁用PDF文件的後處理?

如何在不改變回形針來源的情況下禁用回形針中的pdf後處理?

回答

16

從我目前的生產應用程序,與上述類似,但明確地查找圖像(在這種情況下,我上傳幾乎可以接受任何類型的文件,所以我只處理圖像,而忽略其他所有):

before_post_process :is_image? 

def is_image? 
    ["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"].include?(self.asset_content_type) 
end 
+0

嗨託比,你把這個代碼放在哪裏?謝謝。 – sscirrus

+0

在模型中,iirc –

2

一種解決方案是使用before_post_process回調:

# Model with has_attached_file 
before_post_process :forbid_pdf # should be placed after line with has_attached_file 

private 
def forbid_pdf 
    return false if (data_content_type =~ /application\/.*pdf/) 
end 

data_content_type應改爲模型中的相應字段。

我想出的另一個解決方案是爲圖像創建自定義處理器,我們應該在其中檢查文件類型,如果它不是pdf,則運行標準處理器Paperclip::Thumbnail

0

你可以用一個單行解決這個問題:

before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} } 

不要忘記你的屬性來代替avatar(如:receipt_content_type)。

相關問題