是否有任何rails库用于管理与ActiveRecord连接的文件附件?
我知道回形针,但它似乎主要适用于图像。他们确实在github项目页面上提到了音频和pdf文件,但没有进一步解释不同文件类型的用法。如果你上传音频文件,像:style
这样的属性会改变它们的含义。所以不同的文件大小不是用二维分辨率表示的,而是用比特率表示的。
有回形针的替代品吗?或者是否可以不只是链接imagemagick与回形针,但例如ffmpeg?
对于其他类型的文件,没有理由不能使用Paperclip,但是如果你想要一个替代方案,那么使用CarrierWave是不会出错的。
上面的问题包含多个facette。所以我会一一回答。
回形针:处理器
可以将回形针用于图像以外的其他文件。您可以通过子类化Paperclip::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 (e.g. 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
有人已经为视频文件写了一个回形针处理器。看看paperclip-ffmpeg gem的源代码,看看复杂的处理器是如何编写的。
替代以下是我找到的一些替代方案:
- CarrierWave
- 蜻蜓
- attachment_fu
优点和缺点已经在这里讨论过了。