开发者社区 问答 正文

(PHP)阿里云OSS断点续传,上传失败

[font='Helvetica Neue', Helvetica, Arial, sans-serif]第一步的initiateMultipartUpload是可以正常运行的,也得到了uploadID。
[font='Helvetica Neue', Helvetica, Arial, sans-serif]但是第二步分片上传时,一运行就显示
[font='Helvetica Neue', Helvetica, Arial, sans-serif]The specified upload does not exist. The upload ID may be invalid, or the upload may have been aborted or completed
上传请求如下
$oss->uploadPart(array(
'Bucket' => Param::get('OSS_BUCKET'),
'Key' => $key
'Content' => '123456789',
'UploadId' => $init_ans->getUploadId(),
'PartNumber' => 1,
'PartSize' => 9,
));

@各位大神@各位大神@各位大神@各位大神@各位大神@各位大神

展开
收起
doarcutine 2016-04-16 11:52:49 6495 分享 版权
阿里云 AI 助理回答

遇到"The specified upload does not exist. The upload ID may be invalid, or the upload may have been aborted or completed"这个错误,通常意味着您尝试使用的Upload ID有问题,或者之前尝试的分片上传任务可能已经被取消、完成或不存在。请按照以下步骤进行排查和解决:

  1. 检查Upload ID有效性:确保您在调用uploadPart方法时使用的UploadId是从初始化多部分上传(initiateMultipartUpload)操作中正确获取的,并且没有被修改过。可以打印出来确认一下其值是否与预期相符。

  2. 时间同步问题:虽然不常见,但服务器的时间不同步也可能导致这类问题,因为OSS可能会基于时间戳来验证请求的有效性。请确保您的服务器时间与标准时间保持同步。

  3. 重复使用Upload ID:每个Upload ID对应一个唯一的分片上传任务,不能在不同的上传任务之间复用。如果您不小心重复使用了之前的Upload ID,需要重新执行initiateMultipartUpload以获得新的Upload ID。

  4. 上传状态检查:有可能是之前的上传过程(包括初始化)由于某些原因(如网络中断)并没有成功完成,但实际上您认为已经成功了。可以通过查询多部分上传的部分列表(listParts)来确认该Upload ID下是否有已上传的分片,这有助于判断Upload ID是否有效以及上传任务的状态。

  5. 权限问题:虽然错误信息未直接指出权限问题,但确保执行上传操作的阿里云OSS账号具有足够的权限来执行这些操作也是必要的。

  6. API版本和客户端兼容性:确认您使用的阿里云OSS SDK版本是最新的,并且与您的OSS服务端兼容。有时旧版本的SDK可能无法处理新引入的功能或变更。

如果以上步骤都无法解决问题,建议直接查看阿里云OSS的官方文档或联系阿里云技术支持获取更专业的帮助。同时,也可以尝试捕获并打印出完整的错误响应信息,里面可能包含更多有助于诊断问题的详细信息。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答