上传到Amazon S3时无法设置内容类型

时间:2014-09-11 16:59:54

标签: ruby-on-rails amazon-s3 jquery-file-upload

我尝试使用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)错误。

我尝试过添加存储分区策略,但它没有帮助。

1 个答案:

答案 0 :(得分:1)

关注Ryan's tutorial,需要在policy_data方法中添加内容类型政策。

例如,如果我们想要允许任何内容类型,则应添加以下行:

["starts-with", "$Content-Type", ""]