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