Is Rails Paperclip only for Images?

放肆的年华 提交于 2019-12-02 20:41:50

问题


Are there any rails libraries for managing file attachments connected with ActiveRecord?

I know paperclip, but it seems suitable for images primarily. They indeed mention audio and pdf files on the github project page, but there's no further explanation about the usage of different file types. Attributes like :style would change their meaning if you uploaded an audio file. So different file sizes wouldn't be expressed in a two-dimensional resolution but in terms of bitrates.

Are there any alternatives to paperclip? Or is it possible to not just link imagemagick with paperclip but for example ffmpeg?


回答1:


There's no reason you couldn't use Paperclip for other types of files, but if you want an alternative you can't go wrong with CarrierWave.




回答2:


The question above contains more than one facette. So I'll try to answer them all one-by-one.

Paperclip::Processor

It is possible to use paperclip for other files than images. You can define custom import actions by subclassing Paperclip::Processor. The following code shows a minimal structure of a custom processor implementation. This can be adapted to any file type with custom 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

paperclip and ffmpeg

Someone wrote a paperclip processor for video files already. Have a look at the source of paperclip-ffmpeg gem to see how complex processors are written.

Alternatives

Here are some alternatives I found:

  • CarrierWave
  • Dragonfly
  • attachment_fu

Pro and Cons are already discussed here on stackoverflow.



来源:https://stackoverflow.com/questions/25184207/is-rails-paperclip-only-for-images

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!