如何通過Python boto模塊在啓用網站主機的S3帳戶中的文件上設置內容類型?無法在S3中設置文件內容類型
我做:
from boto.s3.connection import S3Connection
from boto.s3.key import Key
from boto.cloudfront import CloudFrontConnection
conn = S3Connection(access_key_id, secret_access_key)
bucket = conn.create_bucket('mybucket')
b = conn.get_bucket(bucket)
b.set_acl('public-read')
fn = 'index.html'
template = '<html>blah</html>'
k = Key(b)
k.key = fn
k.set_contents_from_string(template)
k.set_acl('public-read')
k.set_metadata('Content-Type', 'text/html')
然而,當我訪問它從http://mybucket.s3-website-us-east-1.amazonaws.com/index.html我的瀏覽器會提示我要下載的文件,而不是簡單地服務於它作爲一個網頁。
查看S3管理控制檯中的元數據顯示Content-Type
實際上已設置爲「application/octet-stream」。如果我在控制檯中手動更改它,我可以正常訪問頁面,但是如果我再次運行腳本,它會將其重置爲錯誤的內容類型。
我在做什麼錯?
我並不完全確定,但如果我沒有記錯,您的操作的順序是顯着的。嘗試重新排序您的關鍵操作 - 例如,在設置內容之前設置「Content-Type」元數據。 – lanzz