Browse Source

文件下载

plf 4 years ago
parent
commit
91fd5d3ba7

+ 22 - 0
src/main/java/com/caimei/www/controller/authorized/document/DocumentAuthController.java

@@ -5,6 +5,7 @@ import com.caimei.www.pojo.document.OssAuthorization;
 import com.caimei.www.service.page.DocumentAuthService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Mono;
@@ -95,4 +96,25 @@ public class DocumentAuthController {
         return documentAuthService.moreData(archiveId);
     }
 
+
+    /**
+     * 文件下载
+     */
+    @GetMapping("/downFile")
+    public Mono<JsonModel> downFile(Integer pdfId) {
+        if (pdfId == null) {
+            return Mono.just(JsonModel.error("参数异常"));
+        }
+        return documentAuthService.downFile(pdfId);
+    }
+
+    /**
+     * 定时删除服务器本地文件
+     */
+    @Scheduled(cron = "0 0 1 * * ?")
+    //@GetMapping("deleteFile")
+    public void deleteFile() {
+        documentAuthService.deleteFile();
+    }
+
 }

+ 5 - 0
src/main/java/com/caimei/www/pojo/document/OssArchivePdf.java

@@ -36,6 +36,11 @@ public class OssArchivePdf implements Serializable {
      */
     private String ossName;
 
+    /**
+     * 是否支持下载: 0不支持,1支持
+     */
+    private String isDownload;
+
     /**
      * 文件唯一标识
      */

+ 16 - 0
src/main/java/com/caimei/www/service/page/DocumentAuthService.java

@@ -69,4 +69,20 @@ public interface DocumentAuthService {
      * @return
      */
     Mono<JsonModel> moreData(Integer archiveId);
+
+
+    /**
+     * 文件下载
+     *
+     * @param pdfId 文件id
+     * @return
+     */
+    Mono<JsonModel> downFile(Integer pdfId);
+
+    /**
+     * 定时删除服务器文件
+     *
+     * @return
+     */
+    void deleteFile();
 }

+ 46 - 0
src/main/java/com/caimei/www/service/page/impl/DocumentAuthServiceImpl.java

@@ -2,6 +2,7 @@ package com.caimei.www.service.page.impl;
 
 import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.GetObjectRequest;
 import com.caimei.www.mapper.DocumentAuthDao;
 import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.pojo.document.CookieBuilder;
@@ -26,6 +27,7 @@ import org.springframework.util.StringUtils;
 import reactor.core.publisher.Mono;
 
 import javax.annotation.Resource;
+import java.io.File;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -198,4 +200,48 @@ public class DocumentAuthServiceImpl implements DocumentAuthService {
         }
         return Mono.just(JsonModel.success(ossArchive));
     }
+
+    @Override
+    public Mono<JsonModel> downFile(Integer pdfId) {
+        OssArchivePdf ossArchivePdf = documentAuthDao.findOssArchivePdfById(pdfId);
+        if (ossArchivePdf != null) {
+            try {
+                // 创建OSSClient实例。
+                OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+                File file = new File("src/main/resources/static/file");
+                if (!file.exists()) {
+                    file.mkdir();
+                }
+                // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
+                ossClient.getObject(new GetObjectRequest(bucketName, ossArchivePdf.getOssName()), new File("src/main/resources/static/file/" + ossArchivePdf.getName()));
+                // 关闭OSSClient。
+                ossClient.shutdown();
+            } catch (Exception e) {
+                e.printStackTrace();
+                return Mono.just(JsonModel.error(e.getMessage()));
+            }
+        } else {
+            return Mono.just(JsonModel.error("文件不存在"));
+        }
+        return Mono.just(JsonModel.success(ossArchivePdf.getName()));
+    }
+
+    @Override
+    public void deleteFile() {
+        File file = new File("src/main/resources/static/file");
+        //取得这个目录下的所有子文件对象
+        File[] files = file.listFiles();
+        //遍历该目录下的文件对象
+        if (files != null && files.length > 0) {
+            for (File f : files) {
+                //打印文件名
+                String name = file.getName();
+                log.info("定时删除服务器临时文件,文件名>>>>>" + name);
+                //判断子目录是否存在子目录,如果是文件则删除
+                f.delete();
+            }
+        }
+        //删除空文件夹
+        file.delete();
+    }
 }