开发者社区> 问答> 正文

使用OSS SDK实现URL授权上传,总是提示签名不正确

按照这篇文档(help.aliyun.com/knowledge_detail/5973732.html) ,可以使用OSS SDK生成一个URL提供第三方来上传文件,但是使用curl命令测试总是提示签名不正确。


URL生成代码:


Date expires = new Date( new Date().getTime() + 15000 * 60) ; // 1 minute to expire

GeneratePresignedUrlRequest request =

         new GeneratePresignedUrlRequest( "rise-academy-hippoom" , "spike1.jpg" , HttpMethod. PUT) ;

request.setExpiration(expires) ;
request.setContentType( "image/jpeg") ;

URL url = client.generatePresignedUrl(request) ;

System. out.println(url.toString()) ;
curl命令:


curl -XPUT rise-academy-hippoom.oss-cn-shanghai.aliyuncs.com/spike1.jpg\?Expires\=1468211581\&OSSAccessKeyId\=rE9VKnhNps3jjABi\&Signature\=P5OvnQUTdcuMvVzy1RZJNGfRS3Y%3D --data-binary <path-to-file>


总是提示




   <Error>
<Code> SignatureDoesNotMatch </Code>

<Message> The request signature we calculated does not match the signature you provided. Check your key and signing method. </Message>
<RequestId> 57831F25E0325C10097A2E46 </RequestId>

<HostId> rise-academy-hippoom.oss-cn-shanghai.aliyuncs.com </HostId>
<OSSAccessKeyId> rE9VKnhNps3jjABi </OSSAccessKeyId>

<SignatureProvided> P5OvnQUTdcuMvVzy1RZJNGfRS3Y%3D </SignatureProvided>
<StringToSign>

PUT


image/jpeg
1468211581

/rise-academy-hippoom/spike1.jpg
</StringToSign>

<StringToSignBytes> 50 55 54 0A 0A 69 6D 61 67 65 2F 6A 70 65 67 0A 31 34 36 38 32 31 31 35 38 31 0A 2F 72 69 73 65 2D 61 63 61 64 65 6D 79 2D 68 69 70 70 6F 6F 6D 2F 73 70 69 6B 65 31 2E 6A 70 67 </StringToSignBytes>
</Error>


我使用同样地方法生成授权访问的URL(get方法)是可以工作的,就是PUT不行。
我使用OSSClient.putObject 则可以上传,有人遇到过类似的问题吗?

展开
收起
hippoom 2016-07-11 12:44:58 8530 0
4 条回答
写回答
取消 提交回答
  • 如果生成签名URL的时候指定了Content-Type,则上传时要给定Content-Type和Content-Length,如果没有给的Content-Type,则只有给Content-Length,就你这个问题来说,需要再给一个Content-Type=image/jpeg和Content-Length请求头。

    2023-11-24 21:31:36
    赞同 展开评论 打赏
  • Re使用OSS SDK实现URL授权上传,总是提示签名不正确
    请问楼主有解决吗,也遇到了一样的问题
    2016-07-17 12:06:21
    赞同 展开评论 打赏
  • 参考下Java SDK帮助的用法:
       https://help.aliyun.com/document_detail/32016.html

    对于你这个问题来说,你就是要在curl上传的时候把Content-Type指定为 image/jpeg
    2016-07-15 08:25:00
    赞同 展开评论 打赏
  • Re使用OSS SDK实现URL授权上传,总是提示签名不正确
    楼主,请问这个问题你解决了吗?我现在也遇到了这个问题
    2016-07-14 18:45:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载