开发者社区 > 云存储 > 对象存储OSS > 正文

OSS分块上传可以修改分块嘛

我在调用oss c sdk时遇到一个问题:在上传一个大文件流(buffer)时,我调用了分片上传的方法,但当上传过程中我突然发现我需要去更新前面的部分分片(代码逻辑),有啥函数接口可以查询到指定分片内容嘛?
不想先存到本地,再上传到oss上,那样有点浪费时间

展开
收起
游客155255 2024-03-27 10:13:45 64 0
3 条回答
写回答
取消 提交回答
  • 无法直接修改已上传的分块

    在使用OSS进行分块上传时,一旦分块上传至OSS并完成了最终的合并,这些分块就成为了文件的一部分,无法单独修改某个分块的内容。这是因为分块上传的设计初衷是为了让大文件传输更加高效和可靠,而非用于频繁修改文件内容的场景。

    如果您需要更新文件的部分内容,通常的做法是:

    1. 重新上传整个文件:如果文件内容变动较大,您可能需要重新上传整个文件来替换旧的文件版本。
    2. 下载修改后重新上传:如果需要修改的是文件的一小部分,您可以先将整个文件下载到本地,进行必要的修改,然后再次上传整个文件。
    3. 使用版本控制:如果您使用的是支持版本控制的OSS服务,您可以上传新版本的文件,而不是覆盖旧版本,这样旧版本仍然可以访问。

    此外,如果您希望在不下载整个文件的情况下修改文件的某一部分,可能需要考虑使用支持部分更新的存储服务,或者在应用层面实现文件的版本管理和更新逻辑。

    2024-03-27 17:59:04
    赞同 1 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在阿里云OSS中,一旦分片上传开始并且分片已经上传到服务器,您就无法直接查询或修改单个分片的内容

    分片上传(Multipart Upload)是将大文件分割成多个部分独立上传,所有分片上传完成后,通过调用CompleteMultipartUpload接口将这些分片组合成一个完整的Object。这个过程中,每个分片是独立上传的,且上传后不能更改。如果您需要更新文件的某一部分,通常的做法是:

    • 重新上传整个分片:取消当前的分片上传,重新上传包含更新内容的新分片。
    • 完成上传后修改:完成整个文件的分片上传和合并,然后使用CopyPart API来覆盖或修改Object的某一部分。这需要在分片合并之后进行。

    此外,如果您希望在上传过程中能够更新分片,您可能需要调整您的逻辑,使得在开始上传之前就确定好所有的分片内容。这样可以避免上传过程中需要更新分片的情况。

    总的来说,由于OSS的设计是为了优化大文件的上传效率,并不支持在上传过程中对单个分片的查询或修改。因此,您需要根据您的具体需求,合理规划分片上传的策略,以便在不影响整体上传效率的同时,也能够实现文件内容的更新。

    2024-03-27 13:49:29
    赞同 3 展开评论 打赏
  • 阿里云大降价~

    OSS分块上传过程中不支持修改已上传的分块

    一旦分块上传到OSS(对象存储服务)后,无法直接修改特定分块的内容。分块上传(Multipart Upload)是将大文件分成多个部分独立上传,之后再将这些部分组合成完整的文件的过程。该功能主要用来处理大文件上传和断点续传的场景。如果需要更新文件内容,通常的做法是:

    1. 重新开始上传:取消当前的分块上传过程,从头开始新的分块上传操作,将更新后的文件重新分块并上传。
    2. 覆盖上传:如果只是文件内容的少量变动,可以考虑完成当前的分块上传,之后使用覆盖上传(即,上传一个具有相同对象键的新文件)来替换旧的文件版本。
    3. 下载修改后再上传:虽然您提到不想先存到本地再上传,但这也是修改云上文件内容的常用方法。您可以将文件分块下载到本地,进行必要的修改,然后再次执行分块上传流程。

    此外,在分块上传的过程中,您可以通过ListParts接口查询已经上传的分块列表,但这并不意味着您可以修改这些分块的内容。如果您确实需要修改特定分块,建议根据具体情况选择上述提到的替代方案。同时,确保在进行此类操作时考虑网络状况、成本和效率等因素,以便选择最合适的方法。

    2024-03-27 12:30:22
    赞同 展开评论 打赏

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载