将资产上传到 S3 不起作用



我需要上传一个css文件和一个js文件到S3,并使用它们作为静态资源。如果我上传他们通过网络从S3页面,它的工作。但是如果我通过python脚本上传,它上传的文件,但我不能得到css似乎不工作。

这是我的python代码,

s3 = boto3.resource('s3')
s3.meta.client.upload_file('sample.css', 'mybucket', 'sample_dir/sample.css', {'ACL': 'public-read'})

这里值得注意的是,通过控制台上传的文件可以被浏览器正确使用,而通过API上传的文件则不能。

默认情况下,AWS/S3控制台自动为许多上传的文件类型设置Content-Type:(对于CSS,可能应该是text/css)…但是API要求它由你的代码设置。

但是,你似乎没有设置它,所以浏览器可能会拒绝使用css,即使它下载成功,因为Content-Type:响应头包含一个意外的值。

(浏览器开发工具/控制台应该显示一个错误或警告来确认)。

提到文件类型就解决了这个问题。

s3 = boto3.resource('s3')
s3.meta.client.upload_file('sample.css', 'mybucket', 'sample_dir/sample.css', {'ACL': 'public-read','public-read','ContentType': 'text/css'})

最新更新