ソースを参照

文件大小获取处理

user5 2 年 前
コミット
c899282dc3

+ 43 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OSSClientService.java

@@ -5,6 +5,7 @@ import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.OSSClientBuilder;
 import com.aliyun.oss.model.OSSObject;
 import com.aliyun.oss.model.PutObjectResult;
+import com.aliyun.oss.model.SimplifiedObjectMeta;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -21,6 +22,12 @@ import java.util.Date;
 @Service
 public class OSSClientService {
 
+    @Value("${config.accessory.aliyun.aliyunDownloadUrl}")
+    private String aliyunDownloadUrl;
+
+    @Value("${config.accessory.aliyun.aliyunUrl}")
+    private String aliyunUrl;
+
     @Value("${config.accessory.aliyun.bucketName}")
     private String bucketName;
 
@@ -77,6 +84,42 @@ public class OSSClientService {
         return null;
     }
 
+
+
+    /**
+     * 阿里云获取临时文件大小
+     * @param file
+     */
+    public Long getSimplifiedObjectMeta(String file){
+        //初始化OSSClient
+        OSSClient ossClient = new OSSClient(endpoint,accessKeyId,accessKeySecret);
+
+        URL url = null;
+        SimplifiedObjectMeta simplifiedObjectMeta = new SimplifiedObjectMeta();
+        try {
+
+            file = file.replace("amp;","");
+            String aliyunDownload = aliyunDownloadUrl;
+            String aliDownloadUrl = aliyunUrl;
+            String cons = "";
+            if (file.contains(aliyunDownload)){
+                cons = aliyunDownload;
+            }else if (file.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")){
+                cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
+            }else {
+                cons = aliDownloadUrl;
+            }
+            String key = file.split(cons+"/")[1];
+            simplifiedObjectMeta = ossClient.getSimplifiedObjectMeta(bucketName, key);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return simplifiedObjectMeta.getSize();
+    }
+
+
     /**
      * 文件下载
      * @param key

+ 24 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.model.OSSObject;
+import com.aliyun.oss.model.SimplifiedObjectMeta;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -28,6 +29,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
+import java.net.URL;
 import java.net.URLEncoder;
 import java.util.*;
 
@@ -161,10 +163,31 @@ public class OssService extends ServiceImpl<OssServiceMapper,WorkAttachment> {
      */
     public List<WorkAttachment> temporaryUrl(List<WorkAttachment> list) {
         list.stream().forEach(work -> {
+            String url = null;
             if (StringUtils.isNotEmpty(work.getUrl())) {
-                String url = aliyunUrl + work.getUrl();
+                url = aliyunUrl + work.getUrl();
                 work.setTemporaryUrl(getFileTemporaryLookUrl(url));
             }
+
+            //对文件大小进行处理
+            if(StringUtils.isBlank(work.getFileSize())){
+                work.setFileSize("0");
+            }
+            if(StringUtils.isNotBlank(work.getFileSize())){
+                Long fileSizeBytes = Long.parseLong(work.getFileSize());
+                //如果数据库文件大小小于等于0, 则访问阿里云获取文件大小
+                fileSizeBytes = 0L;
+                if (fileSizeBytes<=0){
+                    fileSizeBytes = ossClientService.getSimplifiedObjectMeta(url);
+                }
+
+                if(null != fileSizeBytes){
+                    Double fileSize = (double)fileSizeBytes/1024/1024;
+                    work.setFileSize(String.format("%.2f", fileSize));
+                }else{
+                    work.setFileSize("0.00");
+                }
+            }
         });
         return list;
     }