4

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

2 回答 2

5

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

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

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

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

于 2015-10-21T16:14:18.473 回答
4

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

s3 = boto3.resource('s3')
s3.meta.client.upload_file('sample.css', 'mybucket', 'sample_dir/sample.css', {'ACL': 'public-read','public-read','ContentType': 'text/css'})
于 2015-10-21T16:09:14.700 回答