【问题标题】:Saving to S3, but file is Blank保存到 S3,但文件为空白
【发布时间】:2012-09-09 03:33:44
【问题描述】:

我正在使用这个答案将 PNG 上传到 S3:

https://stackoverflow.com/a/6693577/815878

文件正在上传到 S3,但是每当我双击图像显示它时,url 是“about:blank”并且屏幕是空白的。

当我下载图像时,它在我的计算机上显示为我保存的图像。我最后的办法是手动测试 url。我将照片公开,然后尝试:

https://s3.amazonaws.com/BUCKET_NAME/IMAGE_NAME.png

这给了我这个:

上面的答案是否还有另一个步骤导致文件上传不正确?我将粘贴我的代码(与上面的链接非常相​​似)以防万一......

image = Image.open(self.image)
conn = S3Connection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
out_im2 = cStringIO.StringIO()
image.save(out_im2, 'PNG')
b = conn.get_bucket('new_test_bucket')
k = b.new_key(self.title+'.png')
k.set_contents_from_filename(out_im2.getvalue())

【问题讨论】:

    标签: python amazon-s3 png binary-data


    【解决方案1】:

    我更喜欢 PHP 而不是 Python,但据我所知,Amazon S3 需要定义文件的类型。

    您需要发送 mime 类型(例如 image/png)让服务器识别文件,因为 S3 不是实际的 Web 服务器,它不太关心文件的扩展名。您可以将其称为“dipididoo.moo”,只要类型是 image/png ,它就可以工作。

    【讨论】:

    • 另外,检查您的权限。我玩得很开心。
    • 正如我所说,我不是 PHP 人,所以我不知道。如果您有任何添加自定义 HTTP 标头的选项,请添加 Content-Type: image/png
    【解决方案2】:

    设置 mimetype 如下:

    k.set_contents_from_filename(out_im2.getvalue(), {'Content-Type' : 'image/png'})
    

    【讨论】:

      猜你喜欢
      • 2020-07-06
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多