全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

追加上传

更新时间:2018-07-02 11:49:23

追加类型的文件(Append Object)暂时不支持copyObject操作。

以下代码用于追加上传文件:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String content1 = "Hello OSS A \n";
  7. String content2 = "Hello OSS B \n";
  8. String content3 = "Hello OSS C \n";
  9. // 创建OSSClient实例。
  10. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  11. ObjectMetadata meta = new ObjectMetadata();
  12. // 指定上传的内容类型。
  13. meta.setContentType("text/plain");
  14. // 通过AppendObjectRequest设置多个参数。
  15. AppendObjectRequest appendObjectRequest = new AppendObjectRequest("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content1.getBytes()),meta);
  16. // 通过AppendObjectRequest设置单个参数。
  17. // 设置存储空间名称。
  18. //appendObjectRequest.setBucketName("<yourBucketName>");
  19. // 设置文件名称。
  20. //appendObjectRequest.setKey("<yourObjectName>");
  21. // 设置待追加的内容。有两种可选类型:InputStream类型和File类型。这里为InputStream类型。
  22. //appendObjectRequest.setInputStream(new ByteArrayInputStream(content1.getBytes()));
  23. // 设置待追加的内容。有两种可选类型:InputStream类型和File类型。这里为File类型。
  24. //appendObjectRequest.setFile(new File("<yourLocalFile>"));
  25. // 指定文件的元信息,第一次追加时有效。
  26. //appendObjectRequest.setMetadata(meta);
  27. // 第一次追加。
  28. // 设置文件的追加位置。
  29. appendObjectRequest.setPosition(0L);
  30. AppendObjectResult appendObjectResult = ossClient.appendObject(appendObjectRequest);
  31. // 文件的64位CRC值。此值根据ECMA-182标准计算得出。
  32. System.out.println(appendObjectResult.getObjectCRC());
  33. // 第二次追加。
  34. // nextPosition指明下一次请求中应当提供的Position,即文件当前的长度。
  35. appendObjectRequest.setPosition(appendObjectResult.getNextPosition());
  36. appendObjectRequest.setInputStream(new ByteArrayInputStream(content2.getBytes()));
  37. appendObjectResult = ossClient.appendObject(appendObjectRequest);
  38. // 第三次追加。
  39. appendObjectRequest.setPosition(appendObjectResult.getNextPosition());
  40. appendObjectRequest.setInputStream(new ByteArrayInputStream(content3.getBytes()));
  41. appendObjectResult = ossClient.appendObject(appendObjectRequest);
  42. // 关闭OSSClient。
  43. ossClient.shutdown();

追加上传详情请参见开发指南中的追加上传。追加上传的完整代码请参见GitHub

本文导读目录