开发者社区 问答 正文

Java-SDK之如何实现上传文件(六)?


简单列举分片上传事件

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. // 列举分片上传事件
  10. ListMultipartUploadsRequest listMultipartUploadsRequest = new ListMultipartUploadsRequest(bucketName);
  11. MultipartUploadListing multipartUploadListing = ossClient.listMultipartUploads(listMultipartUploadsRequest);
  12. for (MultipartUpload multipartUpload : multipartUploadListing.getMultipartUploads()) {
  13.     // Upload Id
  14.     multipartUpload.getUploadId();
  15.     // Key
  16.     multipartUpload.getKey();
  17.     // Date of initiate multipart upload
  18.     multipartUpload.getInitiated();
  19. }
  20. // 关闭client
  21. ossClient.shutdown();

提示:
  • 默认情况下,如果存储空间中的分片上传事件的数量大于1000,则只会返回1000个文件, 且返回结果中 IsTruncated 为 false,返回 NextKeyMarker 和 NextUploadIdMarker 作为下次读取的起点。
  • 如果没有一次性获取所有的上传事件,可以采用分页列举的方式。


列举全部上传事件

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. // 列举分片上传事件
  10. MultipartUploadListing multipartUploadListing;
  11. ListMultipartUploadsRequest listMultipartUploadsRequest = new ListMultipartUploadsRequest(bucketName);
  12. do {
  13.     multipartUploadListing = ossClient.listMultipartUploads(listMultipartUploadsRequest);
  14.     for (MultipartUpload multipartUpload : multipartUploadListing.getMultipartUploads()) {
  15.         // Upload Id
  16.         multipartUpload.getUploadId();
  17.         // Key
  18.         multipartUpload.getKey();
  19.         // Date of initiate multipart upload
  20.         multipartUpload.getInitiated();
  21.     }
  22.     listMultipartUploadsRequest.setKeyMarker(multipartUploadListing.getNextKeyMarker());
  23.     listMultipartUploadsRequest.setUploadIdMarker(multipartUploadListing.getNextUploadIdMarker());
  24. } while (multipartUploadListing.isTruncated());
  25. // 关闭client
  26. ossClient.shutdown();


分页列举全部上传事件


默认情况下,listMultipartUploads一次列举1000个上传事件,上面的列举全部上传事件是分页的一种特殊情况,每页1000个事件。如果需要指定每页事件的数量,即一次列举的事件数量,请参考以下代码。
  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. // 列举分片上传事件
  10. MultipartUploadListing multipartUploadListing;
  11. ListMultipartUploadsRequest listMultipartUploadsRequest = new ListMultipartUploadsRequest(bucketName);
  12. // 每个页中事件数目
  13. listMultipartUploadsRequest.setMaxUploads(50);
  14. do {
  15.     multipartUploadListing = ossClient.listMultipartUploads(listMultipartUploadsRequest);
  16.     for (MultipartUpload multipartUpload : multipartUploadListing.getMultipartUploads()) {
  17.         // Upload Id
  18.         multipartUpload.getUploadId();
  19.         // Key
  20.         multipartUpload.getKey();
  21.         // Date of initiate multipart upload
  22.         multipartUpload.getInitiated();
  23.     }
  24.     listMultipartUploadsRequest.setKeyMarker(multipartUploadListing.getNextKeyMarker());
  25.     listMultipartUploadsRequest.setUploadIdMarker(multipartUploadListing.getNextUploadIdMarker());
  26. } while (multipartUploadListing.isTruncated());
  27. // 关闭client
  28. ossClient.shutdown();






展开
收起
青衫无名 2017-10-18 10:49:11 1884 分享 版权
0 条回答
写回答
取消 提交回答