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

开发者社区> 栗子雪忆> 正文

OSS SignatureDoesNotMatch

2016-05-02 13:50:30 7734 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
添加回答
相关问答

3

回答

请教一个范围查询的问题

小文文文 2019-06-14 14:37:01 115044浏览量 回答数 3

4

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 123717浏览量 回答数 4

10

回答

【精品问答合集】Hbase热门问答

hbase小能手 2019-05-29 14:37:26 120250浏览量 回答数 10

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292300浏览量 回答数 110

3

回答

Logstash采集文件名称以及自定义格式的日志文件采集

Snorlax 2019-06-18 11:51:28 114658浏览量 回答数 3

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135565浏览量 回答数 42

82

回答

OSS入门教程

belle.zhoux 2014-07-07 17:14:27 149406浏览量 回答数 82

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471452浏览量 回答数 24

62

回答

磁盘原地扩容功能4月22日正式上线

艳馨 2015-04-21 23:40:33 96089浏览量 回答数 62

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204011浏览量 回答数 2
+关注
0
文章
5
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载