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

ruby-on-rails – 当我尝试使用预先签名的URL上传时,AWS Ruby SD

发布时间:2020-12-17 01:33:19 所属栏目:百科 来源:网络整理
导读:我在使用AWS Ruby SDK创建到S3的预签名上载链接时遇到问题,同时指定了md5哈希. md5 -q my_file.jpg4ef248082efb309d50f1cbbbd3d7cf4a 从Rails控制台: AWS::S3.new.buckets[bucket].objects[key].url_for(:put,signature_version: :v4,content_md5: '4ef2480
我在使用AWS Ruby SDK创建到S3的预签名上载链接时遇到问题,同时指定了md5哈希.

md5 -q my_file.jpg
4ef248082efb309d50f1cbbbd3d7cf4a

从Rails控制台:

AWS::S3.new.buckets[bucket].objects[key].url_for(:put,signature_version: :v4,content_md5: '4ef248082efb309d50f1cbbbd3d7cf4a').to_s
=> "https://s3.amazonaws.com/<rest_of_url_here>&X-Amz-SignedHeaders=Host%3BContent-MD5"

从命令行:

curl -v -H "content-md5:4ef248082efb309d50f1cbbbd3d7cf4a" -T my_file.jpg "https://s3.amazonaws.com/<rest_of_url_here>&X-Amz-SignedHeaders=Host%3BContent-MD5"

<Error><Code>InvalidDigest</Code><Message>The Content-MD5 you specified was invalid.</Message>    <RequestId>blah</RequestId><Content-MD5>4ef248082efb309d50f1cbbbd3d7cf4a</Content-MD5><HostId>blah</HostId></Error>

我可以生成上传链接并上传而不使用content-md5.执行上传后,我验证了S3对象确实具有与本地文件相同的MD5哈希值.

解决方法

显然你需要MD5 base64编码.请注意,它不是MD5十六进制字符串,而是需要编码的实际MD5.我应该使用以下值:

openssl dgst -md5 -binary my_file.jpg | openssl enc -base64
TvJICC77MJ1Q8cu709fPSg==

(编辑:李大同)

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

    推荐文章
      热点阅读