我有一個小的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