我使用了这段代码,它给我返回的上传部分不超过1000个。如何使用php-aws-lib-listParts()方法上传超过1000个amazons3多部分?谢谢
$parts = $s3->listParts(array(
'Bucket' => $bucket,
'Key' => $keyName,
'UploadId' => $uploadId,
));
如果有1000多个零件,则结果将包含NextPartNumberMarker
字段。取NextPartNumberMarker
中的值,然后发出另一个请求,与您原来的请求完全相同,但添加一个PartNumberMarker
参数,该参数的值来自NextPartNumberMarker
,如下所示:
$result2 = $s3->listParts(array(
'Bucket' => $bucket,
'Key' => $keyName,
'UploadId' => $uploadId,
'PartNumberMarker' => result1['NextPartNumberMarker'],
));
这些参数记录在用于ListParts操作的API文档中。
不过,这样做有点痛苦,所以最简单的方法是使用SDK的"Iterators"功能。迭代程序一次枚举一个部分,并根据需要在后台自动发出后续请求。要将迭代器用于ListParts操作,可以执行以下操作:
$parts = $s3->getIterator('ListParts', array(
'Bucket' => $bucket,
'Key' => $keyName,
'UploadId' => $uploadId,
));
foreach ($parts as $part) {
// Do something with the part data
printf("%d: %s (%d bytes)'n", $part['PartNumber'], $part['ETag'], $part['Size']);
}