【问题标题】:How to handle multiple file formats in Rails?如何在 Rails 中处理多种文件格式?
【发布时间】:2017-04-09 01:09:20
【问题描述】:

假设我有一个类似媒体池的项目。基本上我希望能够上传您可以上传的任何文件(图片、视频、pdf 等)。

我正在考虑使用 refile,因为它支持动态处理图像,这很好,因为将有一个图像 api 可以让用户请求他需要的任何大小的图像。

但是,我将如何处理 pdf 上传或视频上传(甚至视频处理)?

是否有更好的选择来重新提交?

非常感谢!

【问题讨论】:

    标签: ruby-on-rails file-upload paperclip refile shrine


    【解决方案1】:

    首先,文件附件库一般可以上传任何类型的文件。最受欢迎的是 Paperclip 和 CarrierWave。它们使您能够处理上传,这适用于视频。但是,它们不允许您即时处理。

    另一方面,

    Dragonfly 和 Refile 专为动态处理而设计。 Refile 的一个优点是它支持直接上传。 Refile 的一个缺点是您必须通过其 Rack 应用程序提供所有文件,因此如果您在 S3 上上传了您不会处理的视频,您仍然需要为第一次非缓存渲染支付性能损失。 Dragonfly 的一个优点是它具有更高级的动态处理支持,并且还允许您在上传时进行处理。

    最后,我们来到神社。 Shrine 是为上传处理而设计的,它是唯一一个原生支持 background jobs 的库,这对于像视频转码这样的长时间处理特别有用。如果您想将处理委托给第 3 方服务,Shrine 也有一个 Transloadit 集成。但是您也可以使用 Shrine 进行即时处理,使用 Cloudinary 之类的服务,甚至连接 Dragonfly(请参阅 this post)。 Shrine 支持direct uploads,比如 Refile。其他一些值得注意的功能包括:metadata support、logging、flexible file validation、resumable uploads、更好的安全性等。

    由于 Shrine 可以说比任何其他文件附件库具有最多的功能和灵活性,我会推荐它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多