Ruby 存储在s3上的文件未在浏览器中呈现

Ruby 存储在s3上的文件未在浏览器中呈现,ruby,google-chrome,amazon-s3,Ruby,Google Chrome,Amazon S3,我正在复制从s3上的.ipa文件中提取的图像。该文件正在正确移动,但每次我试图在浏览器中查看它时,在谷歌浏览器中,它似乎已损坏。如果我将文件直接下载到我的机器上并打开,它看起来非常好。它在Safari中也会呈现ok Dir.mktmpdir do |dir| Zip::File.open(tmp_ipa) do |zip_file| # Find Icon File icon = zip_file.find do |entry| entry.name.include?

我正在复制从s3上的.ipa文件中提取的图像。该文件正在正确移动,但每次我试图在浏览器中查看它时,在谷歌浏览器中,它似乎已损坏。如果我将文件直接下载到我的机器上并打开,它看起来非常好。它在Safari中也会呈现ok

Dir.mktmpdir do |dir|
   Zip::File.open(tmp_ipa) do |zip_file|
   # Find Icon File
   icon = zip_file.find do |entry|
     entry.name.include? 'AppIcon76x76@2'
   end
   icon.extract(File.join(dir, 'AppIcon.png'))
     s3_icon = bucket.objects[icon_dest]
     s3_icon.write(Pathname.new(File.join(dir, 'AppIcon.png')))
     icon_url = s3_icon.public_url.to_s
   end
end

最可能的问题是在将图像上载到S3时没有将内容类型设置为image/png。在命令行中尝试以下操作:

curl -i http://your-bucket.s3.amazonaws.com/path/to/AppIcon.png

内容类型标题是什么?如果不是image/png,请在上载时设置它。

最可能的问题是在将图像上载到S3时没有将内容类型设置为image/png。在命令行中尝试以下操作:

curl -i http://your-bucket.s3.amazonaws.com/path/to/AppIcon.png

内容类型标题是什么?如果它不是image/png,请在上载时设置它。

这几乎可以肯定,因为它是从.ipa中提取的

它在Safari中工作的原因是Safari使用操作系统的图像解码库,这些库确实支持这种非标准格式


这几乎可以肯定,因为你说它是从.ipa中提取出来的

它在Safari中工作的原因是Safari使用操作系统的图像解码库,这些库确实支持这种非标准格式


这就是。

尝试在Chrome中打开本地文件,它会呈现吗?@AlexanderO'Mara它不会尝试在Chrome中打开本地文件,是否呈现?@AlexanderO'Mara it not内容类型为内容类型:应用程序/xmlA浏览器(如Chrome)仅在内容类型为image/png时才会尝试呈现png文件。可能是您的修复方案结合了此答案和大多数浏览器,包括Chrome,实际上,它们足够聪明,可以呈现使用错误mime类型发送的图像,只要它用作图像,即img标记。这是一件好事,因为世界上有许多配置不当的服务器。设置正确的mime肯定是个好主意,但非标准格式是主要问题。正在设置内容类型,但仍然没有呈现内容类型是内容类型:application/xmlA浏览器(如Chrome)仅在内容类型为image/png时才会尝试呈现png文件。可能是您的修复方案将此答案与大多数浏览器(包括Chrome)相结合,实际上,它们足够聪明,可以呈现使用错误mime类型发送的图像,只要它用作图像,即img标记。这是一件好事,因为世界上有许多配置不当的服务器。设置正确的mime肯定是一个好主意,但非标准格式是主要问题。正在设置内容类型,但仍然没有呈现。Tanks,我已经在使用ipa_reader gem,它具有IpaReader::PngFile.normalize_pngdata函数。我只需要弄清楚如何使用它。谢谢,我已经在使用ipa_reader gem了,它有一个IpaReader::PngFile.normalize_pngdata函数。我只是想知道如何使用它。