将文件版本动态添加到Carrierwave上传器

时间:2012-03-01 10:19:25

标签: ruby-on-rails-3 file-upload zip carrierwave

我想使用CarrierWave上传器解压缩包含可变数量文件的上传zip文件,并将每个文件存储在存储zip文件的同一位置。这些文件应该在拿着上传器的模型中可用。

我只需要一个如何实现这一点的起点。

1 个答案:

答案 0 :(得分:0)

不确定这是100%相关,但我刚刚建立了一个接受zip文件的Gallery控制器,并将此zipfile的内容添加为Images,与{{1}相关联} model。

我通过使用Zippy gem以及扩展StringIO的归位滚动FilelessFile类来完成此任务。

zipfile中的每个文件都保存为单独的carrierawave挂载Gallery模型。

在您的情况下,我猜您可以拥有一个Image模型(以及一个文件上传器)File您的主模型,并且您的主模型与{belongs_to关系has_many 1}}模型。

对于控制器的免除和“魔术”无文件处理,请参阅:https://gist.github.com/1963073

注意:请注意,我不使用CarrierWave处理zipfile上传,我使用CarrierWave将文件保存在zipfile中。如果您还需要存储zip文件,您可以创建一个ZipFile上传器并在主模型上安装zipfile以及单个文件,或者只是重复使用File上传器并将zipfile保存在主模型的字段中。