将资产上传到 S3 无效

Uploading asset to S3 isn't working

我需要将一个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'})

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

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

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

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

但是,您似乎没有设置它,因此即使下载成功,浏览器也可能拒绝使用 css,因为 Content-Type: 响应 header 包含意外值。

(浏览器开发者 tools/console 应显示错误或警告以确认这一点)。