繁体   English   中英

将具有不同元数据的多个对象放入Amazon S3失败

[英]Putting multiple objects in Amazon S3 with different meta data fails

我已经遍历了一系列文件信息,并使用AWS PHP 2 skd将这些文件的内容上载到云中,在我尝试添加元数据之前,所有这些工作都很出色,这时,它添加了将元数据添加到创建的第一个对象,但是此后,我收到以下错误消息:

致命错误:未捕获的Aws \\ S3 \\ Exception \\ SignatureDoesNotMatchException:AWS错误代码:SignatureDoesNotMatch,状态代码:403,AWS请求ID:8FC9360F2EB687EE,AWS错误类型:客户端,AWS错误消息:我们计算出的请求签名与您的签名不匹配提供。 检查您的密钥和签名方法。,用户代理:aws-sdk-php2 / 2.2.1枪口/3.3.1 curl / 7.24.0 PHP / 5.3.13放入D:\\ Inetpub \\ wwwroot \\ ThirdParty_Resources \\ AWS_SDK2 \\ aws第89行的\\ aws-sdk-php \\ src \\ Aws \\ Common \\ Exception \\ NamespaceExceptionFactory.php

我从循环中裁剪了代码,以突出显示顽皮的区域。

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);
}

因此,第二次绕过循环,由于元值不同,它似乎炸了。 当元数据相同时,循环将毫无问题地执行。 任何帮助/指针都将很好。

您可能会将putObject方法与上载辅助方法混淆。

从SDK版本2.4开始,可以使用upload帮助器方法。 使用上upload方法,您可以执行以下操作:

try {
    $sKey = $sBucketFolder . $sFilenameToSave;
    $obj_FileUpload = $obj_S3->upload($sBucket, $sKey, $sFile, 'public-read', array(
        'Metadata' => $arr_ObjectMeta
    ));
    $files_uploaded++;
} catch (\Aws\S3\Exception\S3Exception $e) {
    $files_not_uploaded++;
}

您也可以使用putObject方法执行相同的操作,只是稍微有些冗长。

try {
    $obj_FileUpload = $obj_S3->putObject(array(
        'Bucket'     => $sBucket
        'Key'        => $sBucketFolder . $sFilenameToSave,
        'SourceFile' => $sFile,
        'ACL'        => 'public-read'
        'Metadata'   => $arr_ObjectMeta
    ));
    $files_uploaded++;
} catch (\Aws\S3\Exception\S3Exception $e) {
    $files_not_uploaded++;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM