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

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

急急急!!!oss put 请求SignatureDoesNotMatch

2016-05-02 15:27:30 5928 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 同名文件覆盖上传,有时候下载下来,的还是之前的文件,有缓存怎么办?也没使用cdn功能

2017-08-29 10:32:19 5333浏览量 回答数 2

1

回答

iOS 真机测试使用oss上传图片,第一次上传会出现错误

2017-08-26 16:36:26 3335浏览量 回答数 1

3

回答

iOS SDK怎么实现OSS的断点续传?分片上传和断点续传可以结合吗

2017-08-23 12:37:27 5682浏览量 回答数 3

2

回答

阿里云OSS Android 自签名模式获取token后进行上传

2017-08-22 12:08:54 7339浏览量 回答数 2

1

回答

此帖子作废 OSS上传回调

2017-08-16 11:07:34 2536浏览量 回答数 1

1

回答

本地上传大量OSS怎么做?

2017-08-11 09:47:43 1997浏览量 回答数 1

1

回答

OSS上传SDK报错

2017-08-08 15:10:30 2086浏览量 回答数 1

1

回答

阿里云的OSS上传用STS方式初始化时的那个有效时间是什么格式?

2017-08-04 15:42:53 3404浏览量 回答数 1

1

回答

Java对文件加密再上传倒OSS,这里想问一下这个‘yourKey’是什么东西

2017-07-21 11:03:40 2925浏览量 回答数 1

2

回答

关于OSS中的上传回调Callback

2017-07-21 09:03:35 3303浏览量 回答数 2
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
百问百答-OSS (上)
立即下载
百问百答-OSS (下)
立即下载
阿里云 JindoFS+OSS 数据上云实战
立即下载