急急急!!!oss put 请求SignatureDoesNotMatch-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

急急急!!!oss put 请求SignatureDoesNotMatch

2016-05-02 15:27:30 5712 1

$user = $request->user()['name'];

$bucket = '';
$region ='';//new默认为oss-cn-hangzhou
$AcId ='';
$AcKey ='';
$up_url='http://oss-cn-shanghai.aliyuncs.com/';//上传路径
$down_url = "http://$bucket.$region.aliyuncs.com";//分享访问地址
$path =substr(md5($user), 0, 10);
if ($_FILES["image"]["error"] >0)
{
    echo "file error". $_FILES["image"]["error"]."<br />";
    die();
}
$filePath = $_FILES["image"]["tmp_name"];//存储在服务器的文件的临时副本的名称
$filePath1 = $_FILES["image"]["name"];
$fileSize = filesize($filePath);// 函数返回指定文件的大小。为curl服务
$serverPath = $path.md5(microtime()).".jpg";//md5(uniqid(microtime()))
$uri = "/".$bucket ."/$serverPath";

//格式化 GT/UTC 日期/时间。同 date() 函数 类似,不同的是返回的时间是格林威治标准时(GMT)。

$date = gmdate('D, d M Y H:i:s \G\M\T');
$picturedata=fread(fopen($filePath,"r"),$fileSize);
$content_md5=base64_encode(md5($picturedata));
$content_type= $_FILES["image"]["type"];
$caResource='/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode("/".$filePath1));
$string_to_sign="PUT\n".$content_md5."\n". $content_type."\n".$date."\n/".$bucket.$caResource;
$string_to_sign_new=utf8_encode($string_to_sign);
$sign = base64_encode(hash_hmac("sha1",$string_to_sign_new,$AcKey,true));
$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 基本认证
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_PUT, true);
$fh = fopen($filePath, 'rb');
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, $fileSize);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);//设置cURL允许执行的最长秒数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);

if(curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
    return response()->json(['result'=>true,'url'=>$down_url .'/'.$serverPath]);
}
else {
    $errorMessage = sprintf("OSS API ERROR:%s", $result);
    return response()->json(['result'=>false, 'error'=>$errorMessage]);
    //echo $errorMessage;
}
curl_close($ch);

PUT
YmRmM2JmMWRhMzQwNTcyNWJlNzYzNTQwZDY2MDExNDQ=
image/jpeg
Mon, 02 May 2016 07:17:08 GMT
/pddtest//Hydrangeas.jpg

取消 提交回答
全部回答(1)
  • 栗子雪忆
    2019-07-17 18:51:01

    自己已经解决!!!!

    1 0
相关问答

2

回答

oss c sdk列出bucket下面的object提示SignatureDoesNotMatch

2015-11-27 22:53:59 6503浏览量 回答数 2

1

回答

OSS 静态html 异步 跨域 请求 session失效

2016-05-27 10:51:10 2419浏览量 回答数 1

1

回答

[@徐雷frank][¥20]Windows平台MySQL高可用方案

2018-11-14 09:56:54 1451浏览量 回答数 1

6

回答

oss c sdk在嵌入式环境下如何编译

2015-10-23 15:03:39 17872浏览量 回答数 6

10

回答

windows版本oss c sdk如何上传和下载包含中文名的文件

2015-11-20 17:14:30 16518浏览量 回答数 10

0

回答

阿里oss服务 我通过sdk获取 授权url上传文件,提示SignatureDoesNotMatch

2021-12-13 17:23:36 209浏览量 回答数 0

1

回答

oss php sdk

2016-08-04 15:08:56 2041浏览量 回答数 1

1

回答

【OSS】OSS Java SDK报错SignatureDoesNotMatch,该如何处理?

2022-01-19 16:25:31 1170浏览量 回答数 1

5

回答

.NET版本的OSS的web直传,一直报签名错误(SignatureDoesNotMatch)

2016-04-26 17:53:06 5774浏览量 回答数 5

1

回答

【OSS】如何开启或关闭SDK日志?

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