|
@@ -1,5 +1,6 @@
|
|
|
package org.springblade.resource.builder.ossre;
|
|
|
|
|
|
+import com.aliyun.oss.OSS;
|
|
|
import com.aliyun.oss.OSSClient;
|
|
|
import com.aliyun.oss.common.utils.BinaryUtil;
|
|
|
import com.aliyun.oss.model.*;
|
|
@@ -318,6 +319,15 @@ public class AliossTemplateRe implements OssTemplateRe {
|
|
|
return initResult;
|
|
|
}
|
|
|
|
|
|
+ // 根据文件路径,获取当前路径下所有文件的大小
|
|
|
+ public Long getAllFileSizeByFileUrl(String fileUrl){
|
|
|
+ ListObjectsV2Request request = new ListObjectsV2Request(this.getBucketName()).withDelimiter("/").withPrefix(fileUrl);
|
|
|
+ ListObjectsV2Result result = this.ossClient.listObjectsV2(request);
|
|
|
+ List<String> folders = result.getCommonPrefixes();
|
|
|
+ String folder = folders.get(0);
|
|
|
+ return calculateFolderLength(ossClient, this.getBucketName(), folder);
|
|
|
+ }
|
|
|
+
|
|
|
//不使用
|
|
|
// public BladeFile putFileWithPath(String fileName, String filePath,Long projectId, InputStream stream) {
|
|
|
//
|
|
@@ -373,6 +383,24 @@ public class AliossTemplateRe implements OssTemplateRe {
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
+ // 获取某个存储空间下指定目录(文件夹)下的文件大小。
|
|
|
+ private static long calculateFolderLength(OSS ossClient, String bucketName, String folder) {
|
|
|
+ long size = 0L;
|
|
|
+ ListObjectsV2Result result = null;
|
|
|
+ do {
|
|
|
+ // MaxKey默认值为100,最大值为1000。
|
|
|
+ ListObjectsV2Request request = new ListObjectsV2Request(bucketName).withPrefix(folder).withMaxKeys(1000);
|
|
|
+ if (result != null) {
|
|
|
+ request.setContinuationToken(result.getNextContinuationToken());
|
|
|
+ }
|
|
|
+ result = ossClient.listObjectsV2(request);
|
|
|
+ List<OSSObjectSummary> sums = result.getObjectSummaries();
|
|
|
+ for (OSSObjectSummary s : sums) {
|
|
|
+ size += s.getSize();
|
|
|
+ }
|
|
|
+ } while (result.isTruncated());
|
|
|
+ return size;
|
|
|
+ }
|
|
|
|
|
|
//判断文件的格式
|
|
|
public String getcontentType(String filenameExtension) {
|