Преглед на файлове

添加了下载压缩文件功能

wuweihao преди 5 години
родител
ревизия
417b9622ea

+ 3 - 1
README.md

@@ -27,4 +27,6 @@
     
     外网映射:
     http://face3d.4dage.com:8100/
-    
+    
+    
+# 不删除oss物理文件的原因是,下载管理有历史记录,删除了,跟显示有冲突。

+ 2 - 0
museum_application/src/main/resources/application-dev.properties

@@ -54,6 +54,8 @@ logging.level.com.museum=debug
 
 # \u4E0A\u4F20\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84
 output.file.path=F:\\test\\sh_museum_cms\\
+server.domain =http://192.168.0.44:8100/downfile/
+
 oss.file.path=sh_museum/
 oss.domain=http://4dkankan.oss-cn-shenzhen.aliyuncs.com/
 

+ 2 - 0
museum_application/src/main/resources/application-sit.properties

@@ -54,6 +54,8 @@ logging.level.com.museum=debug
 
 # \u4E0A\u4F20\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84
 output.file.path=/root/user/sh_museum_data/
+server.domain =http://face3d.4dage.com:8100/downfile/
+
 oss.file.path=sh_museum/
 oss.domain=http://4dkankan.oss-cn-shenzhen.aliyuncs.com/
 

+ 16 - 0
museum_common/src/main/java/com/museum/common/util/FileUtils.java

@@ -2,6 +2,7 @@ package com.museum.common.util;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.URLUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
@@ -9,6 +10,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
 import java.util.*;
 
 /**
@@ -58,6 +61,19 @@ public class FileUtils {
     }
 
 
+    /**
+     * 根据路径写入文件,适合oss
+     * @param inPath 网络输入路径
+     * @param outPath 保存文件路径
+     * @throws IOException
+     */
+    public static void fielWrite(String inPath, String outPath) throws IOException {
+        InputStream in = URLUtil.getStream(new URL(inPath));
+        FileUtil.writeFromStream(in, outPath);
+    }
+
+
+
     @Test
     public void test(){
         String a = "aaaa.jpg";

+ 5 - 0
museum_domain/src/main/java/com/museum/domain/request/RoamRequest.java

@@ -3,6 +3,7 @@ package com.museum.domain.request;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
@@ -47,4 +48,8 @@ public class RoamRequest implements Serializable {
     @ApiModelProperty(value = "场景/模型url", name = "webSite")
     private String webSite;
 
+    @NotBlank(message = "缩略图url不能为空")
+    @ApiModelProperty(value = "缩略图")
+    private String thumb;
+
 }

+ 4 - 0
museum_web/src/main/java/com/museum/web/controller/BaseController.java

@@ -46,6 +46,10 @@ public class BaseController {
     @Value("${oss.domain}")
     public String OSS_DOMAIN;
 
+
+    @Value("${server.domain}")
+    public String SERVER_DOMAIN;
+
     /** 获取用户名*/
     String getTokenUserName(){
         String token = getToken();

+ 54 - 0
museum_web/src/main/java/com/museum/web/controller/DownloadController.java

@@ -1,7 +1,12 @@
 package com.museum.web.controller;
 
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.URLUtil;
+import cn.hutool.core.util.ZipUtil;
 import com.github.pagehelper.PageInfo;
+import com.museum.common.util.FileUtils;
 import com.museum.common.util.Result;
 import com.museum.domain.entity.FileEntity;
 import com.museum.domain.entity.DownloadEntity;
@@ -27,6 +32,11 @@ import org.springframework.web.bind.annotation.*;
 import tk.mybatis.mapper.entity.Condition;
 
 import javax.validation.Valid;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -132,4 +142,48 @@ public class DownloadController extends BaseController {
 
 
 
+    @ApiOperation("下载")
+    @GetMapping("download/{id}")
+    public Result download(@PathVariable Long id) throws IOException {
+        DownloadResponse entity = downloadService.rFindById(id);
+        if (entity == null) {
+            log.error("对象不存在: {}", id);
+            return Result.failure("对象不存在");
+        }
+        String fileIds = entity.getFileIds();
+        List<FileEntity> files  = StringUtils.isNotBlank(fileIds) ? fileService.findByIds(fileIds) : new ArrayList<>();
+
+        // 1.将oss资源下载到服务器
+        String time = DateUtil.format(new Date(), "yyyyMMdd_HHmmssSSS");
+
+        // 保存目录
+        String serverPath = OUT_PATH + time +"/";
+        FileUtil.mkdir(serverPath);
+        for (FileEntity dbFile : files) {
+
+            FileUtils.fielWrite(dbFile.getFilePath(), serverPath + dbFile.getFileName());
+        }
+
+
+        // 2.将下载文件压缩zip
+        log.info("zipFile: {}", OUT_PATH + time+".zip");
+        ZipUtil.zip(serverPath, OUT_PATH + time+".zip");
+
+
+        // 3.返回静态资源路径(需要tomcat配置静态资源路径)
+        String domainUrl = SERVER_DOMAIN + time + ".zip";
+        log.info("domainUrl: {}", domainUrl);
+
+        return Result.success(domainUrl);
+    }
+
+
+    public static void main(String[] args) throws MalformedURLException {
+
+//        InputStream stream = URLUtil.getStream(new URL("http://4dkankan.oss-cn-shenzhen.aliyuncs.com/sh_museum/image/20200609_114844672_0.jpg"));
+//        FileUtil.writeFromStream(stream, "F:\\test\\sh_museum_cms\\aa1.jpg");
+        ZipUtil.zip("F:\\test\\sh_museum_cms\\20200512_175734309\\", "F:\\test\\sh_museum_cms\\20200512_175734309.zip");
+
+    }
+
 }