RubyZip将JPG变为“不是JPG,以0x89开头”

时间:2010-07-21 11:24:16

标签: ruby-on-rails compression zip rubyzip

我正在使用RubyZip来压缩一组图像(使用Paperclip上传)并允许用户将它们下载到一个文件中,并且一切正常,直到我打开图像。 它不会显示,并尝试Ubuntu我收到错误消息:

 "Error interpreting JPEG image file (Not a JPEG file: starts with 0x89..."

因此,用户正在下载一个文件夹,该文件夹由具有正确用户名的文件填充,但在打开时无法显示,因为计算机无法显示其“格式”。

控制器:

 def zip

  @product = Product.find(params[:id])
  t = Tempfile.new(@product.random+rand(200).to_s)
  Zip::ZipOutputStream.open(t.path) do |z|
    @product.assets.each do |img|
        img_path = "#{RAILS_ROOT}"+"/public"+img.data.url(:original)
        file = File.open(img_path.split('?')[0])

        z.put_next_entry(img.id.to_s+"_original.jpg")
        z.print IO.read(file.path)
    end
  end
send_file t.path, :type => 'application/zip', :disposition => 'attachment', :filename => "#{@product.random}-#{rand(9999).to_s}.zip"

 end

谢谢!

1 个答案:

答案 0 :(得分:0)

0x89表示它是PNG。要么它是由您的过程转换的,要么它不是JPEG开头。