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

file stored on s3 not rendering in browser

我正在复制从 s3 上的 .ipa 文件中提取的图像。该文件正在正确移动,但是当我每次尝试在浏览器中查看它时,它似乎已损坏,在 google chrome 中。如果我直接将文件下载到我的机器上并打开它,它看起来非常好。它在 Safari 中也可以正常显示。

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 时没有将 Content-Type 设置为 image/png。在命令行上试试这个:

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

Content-Typeheader是什么?如果不是 image/png,请在上传时设置。

这几乎可以肯定是因为Apple uses a non-standard proprietary extension of the PNG file format for the PNG files in an iPhone APP (archived link),比如你说的.ipa是从

中提取出来的

它在 Safari 中工作的原因是因为 Safari 使用 OS 的图像解码库,它支持这种非标准格式。

are some conversion scripts out there, that work with varying success.