From aa8d5511abcc6073f4bbba70cb8f5330f530de6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Sat, 24 Feb 2018 11:23:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=87=E4=BB=B6=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +- .../spring/controller/DownLoadController.java | 148 ++++++++++++++++++ src/main/resources/application-dev.yml | 1 + src/main/resources/static/js/homework.js | 5 + .../controller/DownLoadControllerTest.java | 22 +++ 5 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/fjy/spring/controller/DownLoadControllerTest.java diff --git a/pom.xml b/pom.xml index 6a7d7d3..f758f59 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.M7 + 2.0.0.RC2 @@ -56,6 +56,11 @@ spring-boot-starter-aop 1.5.9.RELEASE + + + org.apache.ant + ant + diff --git a/src/main/java/com/fjy/spring/controller/DownLoadController.java b/src/main/java/com/fjy/spring/controller/DownLoadController.java index a74dc13..db1e114 100644 --- a/src/main/java/com/fjy/spring/controller/DownLoadController.java +++ b/src/main/java/com/fjy/spring/controller/DownLoadController.java @@ -4,6 +4,7 @@ import com.fjy.spring.domain.TbFile; import com.fjy.spring.domain.TbUser; import com.fjy.spring.enums.ResultEnum; import com.fjy.spring.exception.UserException; +import com.fjy.spring.properties.ServerProperties; import com.fjy.spring.service.FileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -16,12 +17,19 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import static com.fjy.spring.constant.GlobalConstant.USER_SESSION_KEY; @Controller public class DownLoadController { + @Autowired + private ServerProperties serverProperties;//服务器配置信息 + @Autowired private FileService fileService; @@ -112,4 +120,144 @@ public class DownLoadController { return null; } + + /** + * 传入课程名和文件夹名称,打包下载目录下所有文件 + * @param courseName + * @param folder + * @param response + */ + @GetMapping("/download/downloadzip") + public void batDownload(@RequestParam(value = "courseName") String courseName, + @RequestParam(value = "Folder")String folder, HttpServletResponse response){ + //获取文件夹名称 + String paths = serverProperties.getFilePath()+ "upload/"+courseName+"/"+folder; + String zipPath = serverProperties.getFilePath(); + + List pathList = new ArrayList(); + pathList=getFileString(paths); + //需要压缩的文件--包括文件地址和文件名 + String []path =(String[])pathList.toArray(new String[0]); + // 要生成的压缩文件地址和文件名称 + String zipFileName=courseName+folder+".zip"; + String desPath = zipPath+"\\"+zipFileName; + System.out.println("打包文件存储地址:"+desPath); + + File zipFile = new File(desPath); + ZipOutputStream zipStream = null; + FileInputStream zipSource = null; + BufferedInputStream bufferStream = null; + try { + //构造最终压缩包的输出流 + zipStream = new ZipOutputStream(new FileOutputStream(zipFile)); + for(int i =0;i getFileString(String fileDir) { + List fileList = new ArrayList(); + File file = new File(fileDir); + File[] files = file.listFiles();// 获取目录下的所有文件或文件夹 + List path = new ArrayList(); + List name = new ArrayList(); + int i = 0,j=0; + if (files == null) {// 如果目录为空,直接退出 + path.add("空目录"); + return path; + } + // 遍历,目录下的所有文件 + for (File f : files) { + if (f.isFile()) { + fileList.add(f); + } else if (f.isDirectory()) { + System.out.println(f.getAbsolutePath()); + path.add(f.getAbsolutePath()); + getFileString(f.getAbsolutePath()); + } + } + for (File f1 : fileList) { + System.out.println(f1.getName()); + path.add(f1.getAbsolutePath()); + /*name[j]=f1.getName();j++;*/ + } + return path; + } + + /* public static void main(String[] args) { + List path = new ArrayList(); + path=getFileString("F:\\JAVA Workspace\\Temp\\upload\\信息安全\\第一次作业"); + Iterator it1 = path.iterator(); + while(it1.hasNext()){ + System.out.println(it1.next()); + } + }*/ } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 5f4f096..944abed 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -6,6 +6,7 @@ server: serverproperties: port_num: 8080 filePath: F:\JAVA Workspace\Temp\ + zipfilePath: F:\JAVA Workspace\Temp\zip\ spring: thymeleaf: prefix: classpath:/templates/ diff --git a/src/main/resources/static/js/homework.js b/src/main/resources/static/js/homework.js index 6f752ae..97c60d1 100644 --- a/src/main/resources/static/js/homework.js +++ b/src/main/resources/static/js/homework.js @@ -109,6 +109,11 @@ var Main = { .catch(_ => { }); }, + handleDownload(row) { + /*var url = window.location.protocol+"://"+window.location.host+":"+window.location.port+"/"*/ + window.open(getRootPath_web()+"/download/downloadzip?courseName=" + + row.courseName+"&Folder="+row.folder); + }, handleSelect(key, keyPath) { console.log(key, keyPath); }, diff --git a/src/test/java/com/fjy/spring/controller/DownLoadControllerTest.java b/src/test/java/com/fjy/spring/controller/DownLoadControllerTest.java new file mode 100644 index 0000000..948e188 --- /dev/null +++ b/src/test/java/com/fjy/spring/controller/DownLoadControllerTest.java @@ -0,0 +1,22 @@ +package com.fjy.spring.controller; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import static org.junit.Assert.*; + +public class DownLoadControllerTest { + + @Autowired + private MockMvc mvc; + + @Test + public void batDownload() throws Exception{ + mvc.perform(MockMvcRequestBuilders.get("/download/downloadzip") + .param("courseName","信息安全").param("Folder","第一次作业")) + .andExpect(MockMvcResultMatchers.status().isOk()); + } +} \ No newline at end of file