我尝试使用jQuery和Rails上传到s3目录时设置文件的内容类型。我已经成功实施Ryan Bate's solution而没有问题。
问题是内容类型未设置且默认为binary/octet-stream
。我已经在Ryan的解决方案中添加了以下内容:
uploader_helper.rb
def fields
{
# ...
:content_type => nil,
# ...
}
end
paintings.js.coffee
$("#fileupload").fileupload
add: (e, data) ->
# ...
if types.test(file.type) || types.test(file.name)
# ...
data.form.find('#content_type').attr('name','Content-Type')
data.form.find('#content_type').val(file.type)
data.submit()
# ...
另外,我的CORS配置如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://localhost:3000</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
尝试添加这些字段时收到403 (Forbidden)
错误。
我尝试过添加存储分区策略,但它没有帮助。
答案 0 :(得分:1)
关注Ryan's tutorial,需要在policy_data
方法中添加内容类型政策。
例如,如果我们想要允许任何内容类型,则应添加以下行:
["starts-with", "$Content-Type", ""]