2012-02-09 39 views
0

我用這個答案上傳PNG到S3:保存到S3,但文件是空

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

該文件被上傳到S3但是每當我雙擊該圖片可以顯示它網址是「about:blank」,屏幕空白。

當我下載圖像時,它在我的電腦上顯示爲我保存的圖像。我最後的追求是手動測試網址。我所做的照片公開,然後嘗試:

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

,給了我這樣的:

enter image description here

是否有從以上回答的另一個步驟是不當使文件上傳?我要貼我的代碼(這是非常類似於上面的鏈接),以防萬一......

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()) 

回答

3

我更多的是PHP比Python的傢伙,但是從我所知道的Amazon S3需要定義文件的類型。

您需要發送一個MIME類型(例如圖像/ PNG)的服務器來識別該文件,因爲S3不是一個真正的網絡服務器,它不關心你的文件的擴展。你可以稱之爲「dipididoo.moo」,只要類型是image/png,它就可以工作。

+0

此外,檢查您的權限。我有一段時間與它。 – tkone 2012-02-09 15:59:07

+0

任何想法,在該代碼中添加mimetype? – captDaylight 2012-02-09 16:16:53

+0

正如我所說我不是一個PHP的傢伙,所以我不知道。如果您有任何添加自定義HTTP頭的選項,請添加Content-Type:image/png – 2012-02-09 17:09:08

1

設置的MIME類型如下:

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