ruby – S3 Presigned Post需要特定的Content-Type

ruby – S3 Presigned Post需要特定的Content-Type,第1张

概述首先,我使用的是 ruby的aws-sdk,但我所面对的似乎是对S3的预约帖子的误解. 我希望能够做的是确保使用我的预先发布的帖子上传到S3的任何内容都是视频. 我尝试过做的是在presigned_post哈希中设置content_type_starts_with:“video /”.这导致所有上传被政策条件失败拒绝:[“starts-with”,“$Content-Type”,“video /” 首先,我使用的是 ruby的aws-sdk,但我所面对的似乎是对S3的预约帖子的误解.

我希望能够做的是确保使用我的预先发布的帖子上传到S3的任何内容都是视频.

我尝试过做的是在presigned_post哈希中设置content_type_starts_with:“vIDeo /”.这导致所有上传被政策条件失败拒绝:[“starts-with”,“$Content-Type”,“vIDeo /”].

然后我尝试了content_type:“vIDeo / mp4”,但这会导致s3允许上传任何文件,然后只使用Content-Type标记它:元数据中的“vIDeo / mp4”.

然后我注意到当我上传没有Content-Type约束的文件时,S3会将文件标记为binary / octet-stream.所以我再次尝试了第一种方法,但这次使用的是content_type_starts_with:“binary /”.与之前相同的结果,政策条件失败.

我该如何使用Content-Type字段?它似乎永远不会做我想要它做的事情.

这是我正在使用的代码片段:

# In the controllerclIEnt = Aws::S3::ClIEnt.new(region: 'us-east-1')resource = Aws::S3::Resource.new(clIEnt: clIEnt)bucket = resource.bucket("my-bucket")object_ID = SecureRandom.uuIDobject = bucket.object(object_ID)@presigned_post = object.presigned_post({  acl: "private",content_length_range: 0..104857600,# 100 MB  content_type_starts_with: "vIDeo/",})# In the presigned post erb<form action="<%= presigned_post.url %>" method="post" enctype="multipart/form-data"><% presigned_post.fIElds.each do |name,value| %>    <input type="hIDden" name="<%= name %>" value="<%= value %>"/><% end %>    <input type="file" name="file" accept="*.mp4,*.ogg,vIDeo/*" />    <input type="submit"></form>
解决方法 我只是遇到了一个非常类似的问题,我想我已经解决了.我希望这有帮助.

我意识到设置content_type_starts_with实际上并不限制上传的文件类型,但是它限制了表单数据中实际的内容类型键,但是你仍然需要设置表单的内容类型.帖子.

由于我使用JavaScript进行客户端上传,我只是将其添加到我的上传代码中:
formData.set(‘content-type’,file.type)其中formData是FormData对象的一个​​实例,我最终通过XMLhttpRequest发送给服务器.

执行此 *** 作后,上传pdf将开始上载,但不会将文件保存在S3上,因为MIME类型限制.

如果您需要更多信息,请告诉我,我的一些上传代码基于:http://blog.teamtreehouse.com/uploading-files-ajax

总结

以上是内存溢出为你收集整理的ruby – S3 Presigned Post需要特定的Content-Type全部内容,希望文章能够帮你解决ruby – S3 Presigned Post需要特定的Content-Type所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存