加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Amazon S3直接上传无法识别文件的内容类型

发布时间:2020-12-17 02:27:30 所属栏目:百科 来源:网络整理
导读:我设置了我的Rails应用程序,每个用户都可以上传一个头像.使用HTTP Post将图像直接上传到Amazon S3.到目前为止一切正常,除了用户能够上传任何类型的文件. 我正在使用camelpunch的d2s3插件的分支.以下是帮手: policy = Base64.encode64( "{'expiration': '#{e
我设置了我的Rails应用程序,每个用户都可以上传一个头像.使用HTTP Post将图像直接上传到Amazon S3.到目前为止一切正常,除了用户能够上传任何类型的文件.

我正在使用camelpunch的d2s3插件的分支.以下是帮手:

policy = Base64.encode64(
    "{'expiration': '#{expiration_date}','conditions': [
        {'bucket': '#{bucket}'},['starts-with','$key','#{key}'],{'acl': '#{acl}'},{'success_action_redirect': '#{redirect}'},'$Content-Type','#{content_type}'],['content-length-range',#{min_filesize},#{max_filesize}]
      ]
    }").gsub(/n|r/,'')

    signature = b64_hmac_sha1(D2S3::S3Config.secret_access_key,policy)
    out = ""
    out << %(
      <form action="https://#{bucket}.s3.amazonaws.com/" method="post" enctype="multipart/form-data" id="#{options[:form][:id]}" class="#{options[:form][:class]}">
      <div>
      <input type="hidden" name="key" value="#{key}/${filename}" />
      <input type="hidden" name="AWSAccessKeyId" value="#{access_key_id}" />
      <input type="hidden" name="acl" value="#{acl}" />
      <input type="hidden" name="success_action_redirect" value="#{redirect}" />
      <input type="hidden" name="policy" value="#{policy}" />
      <input type="hidden" name="signature" value="#{signature}" />
      <input type="hidden" name="Content-Type" value="#{content_type}" />
      <input name="file" type="file" />#{submit_button}
      </div>
      </form>
    )

我的内容类型设置为’image / jpeg’,但亚马逊似乎忽略了这一点.在文档中,它表示要像这样设置它.难道我做错了什么?

此外,当上载大于设置的最大文件大小的文件时,应用程序就会停止. S3不回复xml错误消息.这可以修复吗?

谢谢!

蒂姆

解决方法

亚马逊无法确定文件的实际内容类型,因为这需要分析二进制数据.

亚马逊提供的文件具有上传时声明的内容类型,因此该策略仅限制用户上传将使用不允许的内容类型提供的文件.例如,没有人可以破解你的表格并将其作为“application / pdf”.然而,他们可以上传一个声称它是’image / jpeg’的PDF文件,该文件将作为jpeg提供给消费者,从而导致图像损坏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读