开发者社区> 问答> 正文

对象存储 OSSAppend Object 追加上传

已解决

展开
收起
2018-05-21 18:33:44 1782 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    Append Object以追加写的方式上传文件。通过Append Object操作创建的Object类型为Appendable Object,而通过Put Object上传的Object是Normal Object。

    1. AppendObjectRequest append = new AppendObjectRequest(testBucket, testObject, uploadFilePath);
    2. ObjectMetadata metadata = new ObjectMetadata();
    3. metadata.setContentType("application/octet-stream");
    4. append.setMetadata(metadata);
    5. // 设置追加位置
    6. append.setPosition(0);
    7. append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    8. @Override
    9. public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
    10. Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    11. }
    12. });
    13. OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    14. @Override
    15. public void onSuccess(AppendObjectRequest request, AppendObjectResult result) {
    16. Log.d("AppendObject", "AppendSuccess");
    17. Log.d("NextPosition", "" + result.getNextPosition());
    18. }
    19. @Override
    20. public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
    21. // 异常处理
    22. }
    23. });

    用户使用Append方式上传,关键要对Position这个参数进行正确的设置:

    • 当用户创建一个Appendable Object时,追加位置设为0。

    • 当对Appendable Object进行内容追加时,追加位置设为Object当前长度。有两种方式获取该Object长度:

      • 通过上传追加后的返回内容获取。
      • 通过head object获取文件长度。
    2018-05-23 07:17:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载