以下是它的官方上传代码 ,我把帐号换成我的,麻的,还是不能上传。
最后的报错是:
401 Unauthorized
Sign error (sign = md5(METHOD&URI&DATE&CONTENT_LENGTH&MD5(PASSWORD))) , Date offset error!
它说是签名错误,但我仔细检查过,签名是绝对不会错的,完全根据其规则生成的,不可能有错。
以下是我使用的代码:诸位可以拷贝之,一试,告诉我是不是又拍云又出故障了。麻麻的。
public function official(){
$bucketName = '我的bucket,这里不能透露';
$operatorName = '我的用户名,不透露';
$operatorPwd = '我的密码,不透露';
//被上传的文件路径
$filePath = '/opt/lampp/htdocs/campusupload/images/20141109111102720.jpg';
$fileSize = filesize($filePath);
//文件上传到服务器的服务端路径
$serverPath = 'abroad/tt.jpg';
$uri = "/$bucketName/$serverPath";
//生成签名时间。得到的日期格式如:Thu, 11 Jul 2014 05:34:12 GMT
$date = gmdate('D, d M Y H:i:s \G\M\T');
$sign = md5("PUT&{$uri}&{$date}&{$fileSize}&".md5($operatorPwd));
$ch = curl_init('http://v0.api.upyun.com' . $uri);
$headers = array(
"Expect:",
"Date: ".$date, // header 中需要使用生成签名的时间
"Authorization: UpYun $operatorName:".$sign
);
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_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
//"上传成功"
} else {
$errorMessage = sprintf("UPYUN API ERROR:%s", $result);
echo $errorMessage;
}
curl_close($ch);
}
看错误提示应该是服务器时间错误,检查下服务器时间是否正确。