Как установить тип содержимого в файле в учетной записи S3 с поддержкой хостинга через модуль Python boto?Невозможно установить тип содержимого файла в 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». Если я вручную изменю его в консоли, я могу получить доступ к этой странице в обычном режиме, но если я снова запустил свой сценарий, он сбрасывает его обратно на неправильный тип контента.
Что я делаю неправильно?
Я не совсем уверен, но, если я правильно помню, процесс _order_ значителен. Попытайтесь изменить порядок своих ключевых операций - установите метаданные «Content-Type» перед настройкой содержимого, например. – lanzz