获取已上传的分片
获取上传的分片可以罗列出指定Upload ID所属的所有已经上传成功的分片。可以调用OSSClient.listParts获取某个上传事件所有已上传分片。listParts的可设置的参数如下:
简单列举
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- // 列举已上传的分片,其中uploadId来自于initiateMultipartUpload
- ListPartsRequest listPartsRequest = new ListPartsRequest("<yourBucketName>", "<yourKey>", "<uploadId>");
- PartListing partListing = ossClient.listParts(listPartsRequest);
- for (PartSummary part : partListing.getParts()) {
- // 分片号,上传时候指定
- part.getPartNumber();
- // 分片数据大小
- part.getSize();
- // Part的ETag
- part.getETag();
- // Part的最后修改上传
- part.getLastModified();
- }
- // 关闭client
- ossClient.shutdown();
提示:
- 默认情况下,如果存储空间中的分片上传事件的数量大于1000,则只会返回1000个Multipart Upload信息,且返回结果中 IsTruncated 为false,并返回 NextPartNumberMarker作为下此读取的起点。
- 如果没有一次性获取所有的上传分片,可以采用分页列举的方式。
获取所有已上传分片
默认情况下,listParts只能列举1000个分片,如果分片数量大于1000,列举所有分片请参考如下示例。
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- // 列举所有已上传的分片
- PartListing partListing;
- ListPartsRequest listPartsRequest = new ListPartsRequest("<yourBucketName>", "<yourKey>", "<uploadId>");
- do {
- partListing = ossClient.listParts(listPartsRequest);
- for (PartSummary part : partListing.getParts()) {
- // 分片号,上传时候指定
- part.getPartNumber();
- // 分片数据大小
- part.getSize();
- // Part的ETag
- part.getETag();
- // Part的最后修改上传
- part.getLastModified();
- }
- listPartsRequest.setPartNumberMarker(partListing.getNextPartNumberMarker());
- } while (partListing.isTruncated());
- // 关闭client
- ossClient.shutdown()
分页获取所有分片
默认情况下,listParts一次列举1000个分片,上面的获取所有已上传分片也是分页的一种特殊情况,每页1000个分片。如果需要指定每页分片的数量,即一次列举的分片数量,请参考以下代码。
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- // 分页列举已上传的分片
- PartListing partListing;
- ListPartsRequest listPartsRequest = new ListPartsRequest("<yourBucketName>", "<yourKey>", "<uploadId>");
- // 每页100个分片
- listPartsRequest.setMaxParts(100);
- do {
- partListing = ossClient.listParts(listPartsRequest);
- for (PartSummary part : partListing.getParts()) {
- // 分片号,上传时候指定
- part.getPartNumber();
- // 分片数据大小
- part.getSize();
- // Part的ETag
- part.getETag();
- // Part的最后修改上传
- part.getLastModified();
- }
- listPartsRequest.setPartNumberMarker(partListing.getNextPartNumberMarker());
- } while (partListing.isTruncated());
- // 关闭client
- ossClient.shutdown();
获取存储空间内所有分片上传事件
列举分片上传事件可以罗列出所有执行中的分片上传事件,即已经初始化的尚未Complete或者Abort的分片上传事件。列举分片上传的可设置的参数如下:
调用OSSClient.listMultipartUploads获取存储空间内分片上传事件。