从 create_mpu_object 上传修改,坑爹啊,弄了好久
====修改部分,以下========
// 初始化multipart
if (isset($options['uploadId'])){
$uploadId = $options['uploadId'];
}else{
//初始化
$upload = $this->initiate_multipart_upload($bucket, $object);
if (!$upload->isOK()){
throw new OSS_Exception('Init multi-part upload failed...');
}
$xml = new SimpleXmlIterator($upload->body);
$uploadId = (string)$xml->UploadId;
}
// 或的分片
$pieces = $this->get_multipart_counts($upload_filesize, (integer) $options[self::OSS_PART_SIZE]);
$uploadResList = array();
$upload_part_result = true;
$upload_parts = array();
if (isset($options['upload_parts'])) {
$upload_parts[] = $options['upload_parts'];
}
foreach ($pieces as $i => $piece){
// if ($i==1) {//人为掏出异常,测试用
// throw new Exception(serialize($uploadResList), 1);
// }
if (isset($options['upload_parts']['PartNumber'])&&$options['upload_parts']['PartNumber']>=($i+1)) {
continue;
}
$response_temp = $this->upload_part($bucket, $object, $uploadId, array(
//'expect' => '100-continue',
self::OSS_FILE_UPLOAD => $options[self::OSS_FILE_UPLOAD],
'partNumber' => ($i + 1),
self::OSS_SEEK_TO => $upload_position + (integer) $piece[self::OSS_SEEK_TO],
self::OSS_LENGTH => (integer) $piece[self::OSS_LENGTH],
));
$upload_part_result = $upload_part_result && $response_temp->isOk();
if(!$upload_part_result){
throw new OSS_Exception(($i + 1).'any part upload failed...,pls try again');
}
$upload_parts[] = array(
'PartNumber' => ($i + 1),
'ETag' => (string) $response_temp->header['etag']
);
//续点上传 上传参数
$uploadResList['partNumber'] = ($i+1);
$uploadResList['uploadId'] = $uploadId;
$uploadResList['OSS_LENGTH'] = $piece[self::OSS_LENGTH];
$uploadResList['OSS_SEEK_TO'] = $piece[self::OSS_SEEK_TO];
$uploadResList['upload_parts'] = $upload_parts;
}
// $upload_parts = array();
// $upload_part_result = true;
// foreach ($response_upload_part as $i=>$response){
// $upload_part_result = $upload_part_result && $response->isOk();
// }
// if(!$upload_part_result){
// throw new OSS_Exception('any part upload failed...,pls try again');
// }
// foreach ($response_upload_part as $i=>$response){
// $upload_parts[] = array(
// 'PartNumber' => ($i + 1),
// 'ETag' => (string) $response->header['etag']
// );
// }
return $this->complete_multipart_upload($bucket, $object, $uploadId, $upload_parts);
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。