我有一组正在循环的文件信息,并使用 AWS PHP 2 skd 将这些文件的内容上传到云中,在我尝试添加元数据之前,这一切都很好,此时,它添加了创建的第一个对象的元数据,但之后我收到以下错误消息:
致命错误:未捕获的 Aws\S3\Exception\SignatureDoesNotMatchException:AWS 错误代码:SignatureDoesNotMatch,状态代码:403,AWS 请求 ID:8FC9360F2EB687EE,AWS 错误类型:客户端,AWS 错误消息:我们计算的请求签名与您的签名不匹配假如。检查您的密钥和签名方法。用户代理:aws-sdk-php2/2.2.1 Guzzle/3.3.1 curl/7.24.0 PHP/5.3.13 扔在 D:\Inetpub\wwwroot\ThirdParty_Resources\AWS_SDK2\aws \aws-sdk-php\src\Aws\Common\Exception\NamespaceExceptionFactory.php 在第 89 行
我已经从循环中裁剪了代码以突出显示顽皮的区域。
foreach($aFiles as $aFile) {
$arr_ObjectMeta = array(
'OriginalFileName' => $aFile['FileName']
, 'Description' => $aFile['FileDesc']
, 'Keywords' => $aFile['FileKeyW']
);
// get the file to upload
$obj_FileUpload = $obj_S3->putObject($sBucket, $sBucketFolder . $sFilenameToSave, $sFile, 'public-read', $arr_ObjectMeta);
if($obj_FileUpload) {
$files_uploaded++;
} else {
$files_not_uploaded++;
}
// clear the file upload S3 response object
unset($obj_FileUpload);
// delete the downloaded file
unlink($sServerUploadFolder.$sFilenameToSave);
}
所以第二次循环,它似乎因为不同的元值而爆炸。当元数据相同时,循环执行没有问题。任何帮助/指针都会很棒。