2011-03-13 53 views
11

我想爲多種格式使用單個文件字段。這是我的理解,回形針足夠聰明,只能縮放圖像,並保留其他格式,但這似乎不適用於FLV(它返回imagemagick /識別錯誤)。有什麼方法可以幫助Paperclip稍微有點並且明確地設置特定的格式來進行縮放?僅回形針處理圖像

UPDATE: 顯然,防止這些錯誤:煩躁=>假(感謝fl00r),其用於定期上傳工作正常。 但是,我想在這裏做的是通過FTP上傳文件,然後通過代碼使用附件參數中的File.new([:path])創建新記錄。這就像圖像的魅力一樣,但是:whiny => false-trick不會再做了。有沒有人有任何提示呢?

回答

13

設置:whiny選項設置爲false:

has_attached_file :my_attach, :whiny => false ... 

它不會幫助peparclip只處理圖像,但如果處理失敗

UPD

處理也不會拋出錯誤僅供圖像:

has_attached_file :file, 
    :styles => lambda{ |a| ["image/jpeg", "image/png"].include?(a.content_type) ? { :small => "90x90#" } : {} } 

您可以在其中添加更多內容類型["image/jpeg", "image/png"] array

+0

更多細節

before_post_process :process_only_images def process_only_images %w(image/jpeg, image/png,image/gif,image/pjpeg, image/x-png).include?(attachment_content_type) end 

檢查回形針的文檔,似乎有很大的幫助,謝謝! – Jpunt 2011-03-15 16:38:35

+0

這裏有些更新 – fl00r 2011-03-16 09:53:26

+0

是的,這應該工作,非常感謝! – Jpunt 2011-03-16 12:06:16

3

您還可以使用回形針的回調來處理圖像,並指示回形針僅處理圖像。如果before_post_process回調返回false,則處理停止。在https://github.com/thoughtbot/paperclip#events

+0

我喜歡這種方式,但代碼不太正確: %w(image/jpeg image/png,image/gif image/pjpeg image/x-png).include?(attachment_content_type) – 2014-01-23 15:57:46

+2

你必須小心,這不是你如何使用%w聲明一個數組。用這個代替'%w(image/jpeg image/png image/gif image/pjpeg image/x-png).include?(resource_content_type)' – fenec 2015-09-04 14:58:50