我有一个小的Rails使用CarrierWave 0.5.8文件上传到S3 3.2.1应用程序(使用雾)下载和压缩和解文件被上传到S3与CarrierWave
我希望用户能够选择一些他们想要下载的图片,然后将其压缩并发送给他们一个zip文件。以下是我想出来的:
def generate_zip
#A collection of Photo objects. The Photo object has a PhotoUploader mounted.
photos = Photo.all
tmp_filename = "#{Rails.root}/tmp/" << Time.now.strftime('%Y-%m-%d-%H%M%S-%N').to_s << ".zip"
zip = Zip::ZipFile.open(tmp_filename, Zip::ZipFile::CREATE)
zip.close
photos.each do |photo|
file_to_add = photo.photo.file
zip = Zip::ZipFile.open(tmp_filename)
zip.add("tmp/", file_to_add.path)
zip.close
end
#do the rest.. like send zip or upload file and e-mail link
end
这不起作用,因为photo.photo.file返回CarrierWave ::存储::雾::文件,而不是一个常规文件的一个实例。
编辑:错误,这导致:
变量Errno :: ENOENT:没有这样的文件或目录 - 上传/照片/ name.jpg
我也试过如下:
tmp_filename = "#{Rails.root}/tmp/" << Time.now.strftime('%Y-%m-%d-%H%M%S-%N').to_s << ".zip"
zip = Zip::ZipFile.open(tmp_filename, Zip::ZipFile::CREATE)
zip.close
photos.each do |photo|
processed_uri = URI.parse(URI.escape(URI.unescape(photo.photo.file.authenticated_url)).gsub("[", "%5B").gsub("]", "%5D"))
file_to_add = CarrierWave::Uploader::Download::RemoteFile.new(processed_uri)
zip = Zip::ZipFile.open(tmp_filename)
zip.add("tmp/", file_to_add.path)
zip.close
end
但是,这给了我一个403.一些帮助将不胜感激..它可能不是那么难我只是做它错误™
您使用的是什么宝石?红宝石宝石? – 2013-08-26 18:20:52