如何在Rails中处理多种文件格式?

时间:2016-11-24 16:41:33

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

假设我有一个类似媒体池的项目。基本上我希望能够上传你上传的任何文件(图片,视频,PDF格式等)。

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

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

是否有更好的替代品可以改装?

非常感谢!

1 个答案:

答案 0 :(得分:1)

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

另一方面,

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

最后,我们来到神社。 Shrine专为上传处理而设计,它是background jobs原生支持的唯一库,对于视频转码等更长时间的处理尤其有用。如果要将处理委托给第三方服务,Shrine还具有Transloadit集成。但您也可以使用Shrine进行实时处理,使用Cloudinary之类的服务,甚至连接Dragonfly(参见this post)。 Shrine像Refile一样支持direct uploads。其他一些值得注意的功能包括:metadata supportloggingflexible file validationresumable uploads,更好的安全性和其他功能。

由于Shrine可以说具有比任何其他文件附件库更多的功能和灵活性,我建议去寻找它。