Ruby on rails Amazon S3直接上传不识别文件';s内容类型
我已经设置了Rails应用程序,每个用户都可以上传一个化身。该图像通过HTTP Post直接上传到Amazon的S3。到目前为止,除了用户能够上传任何类型的文件外,一切正常 我正在使用camelpunch提供的d2s3插件的分支。以下是帮助者:Ruby on rails Amazon S3直接上传不识别文件';s内容类型,ruby-on-rails,file-upload,upload,amazon-s3,amazon-web-services,Ruby On Rails,File Upload,Upload,Amazon S3,Amazon Web Services,我已经设置了Rails应用程序,每个用户都可以上传一个化身。该图像通过HTTP Post直接上传到Amazon的S3。到目前为止,除了用户能够上传任何类型的文件外,一切正常 我正在使用camelpunch提供的d2s3插件的分支。以下是帮助者: policy = Base64.encode64( "{'expiration': '#{expiration_date}', 'conditions': [ {'bucket': '#{bucket}'},
policy = Base64.encode64(
"{'expiration': '#{expiration_date}',
'conditions': [
{'bucket': '#{bucket}'},
['starts-with', '$key', '#{key}'],
{'acl': '#{acl}'},
{'success_action_redirect': '#{redirect}'},
['starts-with', '$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>
)
policy=Base64.encode64(
“{'expiration':'{expiration\u date}”,
“条件”:[
{'bucket':'{bucket}},
['starts-with'、'$key'、'#{key}'],
{'acl':'{acl}},
{'success_action_redirect':'{redirect}},
['starts-with','$Content-Type','#{Content\u-Type}'],
['content-length-range',#{min_filesize},#{max_filesize}]
]
}“).gsub(/\n |\r/,”)
签名=b64_hmac_sha1(D2S3::S3Config.secret_access_key,策略)
out=“”
out使用AWS::S3 gem或RightScale的RightAWS gem是否更容易?亚马逊无法确定文件的实际内容类型,因为这需要分析二进制数据
Amazon提供上传时声明的内容类型的文件,因此该策略仅限制用户上传将使用不允许的内容类型提供的文件。例如,没有人可以破解您的表单,并将某些内容用作“application/pdf”。但是,他们可以上传声称是“图像/jpeg”的PDF文件,该文件将作为jpeg提供给消费者,从而导致图像损坏。请澄清:您是否试图通过设置内容类型来执行验证?