diff --git a/src/main/java/com/ycwl/basic/device/operator/impl/AliOssStorageOperator.java b/src/main/java/com/ycwl/basic/device/operator/impl/AliOssStorageOperator.java index 5f0e5f5..7b9310f 100644 --- a/src/main/java/com/ycwl/basic/device/operator/impl/AliOssStorageOperator.java +++ b/src/main/java/com/ycwl/basic/device/operator/impl/AliOssStorageOperator.java @@ -38,6 +38,7 @@ public class AliOssStorageOperator extends CommonPieceGetter OSS ossClient = getClient(); ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(config.getBucketName()); listObjectsV2Request.setPrefix(config.getPrefix() + prefix); + listObjectsV2Request.setMaxKeys(1000); boolean isTruncated = true; String continuationToken = null; List objectList = new ArrayList<>(); @@ -94,16 +95,24 @@ public class AliOssStorageOperator extends CommonPieceGetter if (objectList == null) { return false; } - DeleteObjectsRequest request = new DeleteObjectsRequest(config.getBucketName()); - request.setKeys(objectList.stream().map(OSSObjectSummary::getKey).collect(Collectors.toList())); - try { - ossClient.deleteObjects(request); - return true; - } catch (OSSException e) { - return false; - } finally { - ossClient.shutdown(); + int idx = 0; + int batchSize = 999; + while (objectList.size() > idx) { + if (objectList.size() - idx < batchSize) { + batchSize = objectList.size() - idx; + } + List subList = objectList.subList(idx, idx + batchSize); + idx += batchSize; + DeleteObjectsRequest request = new DeleteObjectsRequest(config.getBucketName()); + request.setKeys(subList.stream().map(OSSObjectSummary::getKey).collect(Collectors.toList())); + try { + ossClient.deleteObjects(request); + } catch (OSSException e) { + return false; + } } + ossClient.shutdown(); + return true; } @Override