我需要将一个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'})
答案 0 :(得分:5)
这里显着的条件是浏览器正确使用通过控制台上传的文件,但通过API上传的文件不是。
默认情况下,AWS / S3控制台会自动为许多上传的文件类型设置Content-Type:
(对于CSS,这应该是text/css
)...但API要求设置它通过你的代码。
但是,您似乎没有设置它,因此浏览器可能拒绝使用css,即使它成功下载,因为Content-Type:
响应标头包含意外值。
(浏览器开发工具/控制台应显示错误或警告以确认此情况。)
答案 1 :(得分: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'})