OSS SignatureDoesNotMatch-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

OSS SignatureDoesNotMatch

2016-05-02 13:50:30 8454 2

StringToSign:
PUT
YmRmM2JmMWRhMzQwNTcyNWJlNzYzNTQwZDY2MDExNDQ=
image/jpg
Mon, 02 May 2016 05:33:01 GMT
/pddtest/Hydrangeas.jpg

{"result":false,"error":"OSS API ERROR:
<?xml version="1.0" encoding="UTF-8"?>n
n

<Code>SignatureDoesNotMatch<\/Code>\n  
    <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.<\/Message>\n  
        <RequestId>5726E67F58DB3AB17E9902A5<\/RequestId>\n  
            <HostId>oss-cn-shanghai.aliyuncs.com<\/HostId>\n  
                <OSSAccessKeyId>8gfnvylFKLbgBQVL<\/OSSAccessKeyId>\n  
                    <SignatureProvided>P5jGd01TmaEawuEtzx\/x6iVYRts=<\/SignatureProvided>\n  
                        <StringToSign>PUT\nYmRmM2JmMWRhMzQwNTcyNWJlNzYzNTQwZDY2MDExNDQ=\nimage\/jpg\nMon, 02 May 2016 05:33:01 GMT\n\/pddtest\/d41d8cd98f6714f5ba4f331db3d856465cd0a2c0a0.jpg<\/StringToSign>\n  

我的代码:

$fileSize = filesize($filePath);// 函数返回指定文件的大小。为curl服务

$serverPath = $path.md5(microtime()).".jpg";//md5(uniqid(microtime()))
$uri = "/".$bucket ."/$serverPath";
//$date = gmdate('D, d M Y H:i:s GMT',strtotime('+8 hours'));//格式化 GMT/UTC 日期/时间。同 date() 函数 类似,不同的是返回的时间是格林威治标准时(GMT)。
$date = gmdate('D, d M Y H:i:s GMT');
$picturedata=fread(fopen($filePath,"r"),$fileSize);
//echo $picturedata;md5_file
$content_md5=base64_encode(md5($picturedata));
// echo $content_md5;
// $content_md5="";
//$content_type= $_FILES"image";
//echo $content_type;
$content_type="image/jpg";
$caOssHeaders="";
//$caResource='/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode("/".$filePath1));
$string_to_sign="PUT\n".$content_md5."n". $content_type."\n".$date."n/".$bucket."/".$filePath1;
$string_to_sign_new=utf8_encode($string_to_sign);
//$string_to_sign_new=str_replace(array("\r", "\n"), '', $string_to_sign);
//$string_to_sign_new.=rawurldecode($caResource);
echo $string_to_sign_new."n";

$sign = base64_encode(hash_hmac("sha1",$string_to_sign_new,$AcKey,true));
// echo $sign;
$ch = curl_init($up_url.$uri);
$headers = array(

"PUT /".$filePath1." HTTP/1.1",
"Content-Md5:".$content_md5,
"Content-Type: ".$content_type,
"Date: ".$date,
"Host:oss-cn-shanghai.aliyuncs.com",
"Authorization: OSS ".$AcId.":" .$sign);//HTTP 基本认证
取消 提交回答
全部回答(2)
  • 栗子雪忆
    2019-07-17 18:51:01

    非常感谢楼上的关注!我自己已经解决了!感觉SDK类容太多,我只要实现一个简单的图片上传功能,在项目中给大家提供一个API!

    1 0
  • 鸣镝
    2019-07-17 18:51:01

    你好,请问为什么不使用sdk?

    0 0
添加回答
相关问答

0

回答

为什么短信发送加密结果已经和文档的一致了还提示SignatureDoesNotMatch

2017-09-09 11:16:15 3134浏览量 回答数 0

10

回答

短信接口SignatureDoesNotMatch

2016-11-12 23:23:09 17219浏览量 回答数 10

1

回答

OSS,上传文件 SignatureDoesNotMatch

2017-07-24 15:42:41 8816浏览量 回答数 1

0

回答

oss 报错SignatureDoesNotMatch

2021-06-04 09:47:30 398浏览量 回答数 0

0

回答

PHP 签名验证一直不对,报错SignatureDoesNotMatch

2016-10-11 17:37:38 3809浏览量 回答数 0

4

回答

OSS上传图片 报SignatureDoesNotMatch

2017-11-23 10:41:57 3464浏览量 回答数 4

1

回答

403错误SignatureDoesNotMatch

2012-08-21 15:21:28 11409浏览量 回答数 1

4

回答

同样的代码执行,有时执行成功,有时说SignatureDoesNotMatch

2015-07-01 11:11:34 6119浏览量 回答数 4

0

回答

oss 用sts 前端上传 签名错误 SignatureDoesNotMatch

2021-11-01 13:09:01 311浏览量 回答数 0

2

回答

点播视频上传提示SignatureDoesNotMatch

2019-02-17 20:35:48 976浏览量 回答数 2
+关注
0
文章
5
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载