Rails Paperclip仅适用于图像吗?

是否有用于管理与ActiveRecord连接的文件附件的rails库?

我知道回形针 ,但它似乎主要适合图像。 他们确实在github项目页面上提到了音频和pdf文件,但是对于不同文件类型的使用没有进一步的解释。 如果您上传了音频文件,则:style会改变其含义。 因此,不同的文件大小不会以二维分辨率表示,而是以比特率表示。

回形针有什么替代品吗? 或者有可能不仅仅将imagemagick与paperclip链接,例如ffmpeg

没有理由你不能将Paperclip用于其他类型的文件,但如果你想要一个替代品,你就不会出现CarrierWave的问题 。

上面的问题包含多个面板。 所以我会尽力一个一个地回答这些问题。

回形针::处理器

可以将回形针用于除图像之外的其他文件。 您可以通过inheritancePaperclip :: Processor来定义自定义导入操作。 以下代码显示了自定义处理器实现的最小结构。 这可以适用于具有自定义options任何文件类型。

 module Paperclip class FileContents < Processor def initialize file, options = {}, attachment = nil @file = file @options = options @instance = attachment.instance @current_format = File.extname(attachment.instance.asset_file_name) @basename = File.basename(@file.path, @current_format) @whiny = options[:whiny].nil? ? true : options[:whiny] end def make begin # your import code (eg ocr or video resizing)... @file rescue StandardError => e raise PaperclipError, "There was an error processing the file contents for #{@basename} - #{e}" if @whiny end end end end 

回形针ffmpeg

有人为video文件写了一个回形针处理器。 看一下paperclip-ffmpeg gem的来源,看看如何编写复杂的处理器。

备择方案

以下是我发现的一些替代方案:

  • CarrierWave
  • 蜻蜓
  • attachment_fu

这里已经在stackoverflow上讨论了Pro和Cons。