소스 검색

minio获取文件大小,并在下载时提供该值,前端video才能拖动视频进度条

yangfeng 1 년 전
부모
커밋
e53905b272

+ 19 - 0
core/src/main/java/org/jeecg/common/util/MinioUtil.java

@@ -205,6 +205,25 @@ public class MinioUtil {
         return inputStream;
     }
 
+    /**
+     * 获取文件大小
+     *
+     * @param objectName
+     * @return
+     */
+    public static long getFileSize(String objectName) {
+        try {
+            initMinio(minioUrl, minioName, minioPass);
+            StatObjectArgs objectArgs = StatObjectArgs.builder().object(objectName)
+                    .bucket(bucketName).build();
+            StatObjectResponse objectStat = minioClient.statObject(objectArgs);
+            return objectStat.size();
+        } catch (Exception e) {
+            log.info("文件获取失败" + e.getMessage());
+        }
+        return 0;
+    }
+
     /**
      * 删除文件
      *

+ 8 - 0
system/system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java

@@ -190,6 +190,14 @@ public class CommonController {
             // 设置强制下载不打开
             response.setContentType("application/force-download");
             response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"), "iso-8859-1"));
+
+            //Accept-Ranges字段为bytes时,表示服务器支持按字节范围请求文件
+            response.addHeader("accept-ranges", "bytes");
+
+            // 设置文件大小
+            long fileSize = MinioUtil.getFileSize(imgPath);
+            response.addHeader("content-length", String.valueOf(fileSize));
+
             outputStream = response.getOutputStream();
             byte[] buf = new byte[1024];
             int len;