Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 1 year ago
parent
commit
0a1cf31712

+ 5 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -24,6 +24,7 @@ import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
@@ -64,6 +65,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -653,11 +655,11 @@ public class ArchivesAutoController extends BladeController {
 	/**
 	 * 批量下载档案
 	 */
-	@PostMapping(value = "/batchDownloadFileToZip", produces = {
-		MediaType.APPLICATION_OCTET_STREAM_VALUE, MediaType.APPLICATION_JSON_VALUE})
+	@GetMapping(value = "/batchDownloadFileToZip")
 	@ApiOperationSupport(order = 19)
 	@ApiOperation(value = "批量下载档案")
-	public void batchDownloadFileToZip(String ids, HttpServletResponse response) {
+	public void batchDownloadFileToZip(String ids, HttpServletResponse response) throws IOException {
+		ServletOutputStream outputStream = response.getOutputStream();
 		archivesAutoService.batchDownloadFileToZip(ids,response);
 	}
 }

+ 22 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -2422,19 +2422,38 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				this.packageZip2(defaultDir,projectDir,projectInfo.getId());
 				String zipFile = defaultDir + "/"+projectInfo.getId()+".zip";
 				Path path = Paths.get(zipFile);
-				response.setContentType("application/octet-stream");
-				response.setHeader("Content-Disposition", "attachment;filename="+projectInfo.getProjectName());
+				response.setContentType("application/zip");
+				response.setHeader("Content-Disposition", "attachment;filename="+projectInfo.getId()+"2.zip");
 				// 获取文件内容流并写入响应
 				Files.copy(path, response.getOutputStream());
 
 			}catch (Exception e){
 				throw new ServiceException(e.getMessage());
+			}finally {
+				//删除文件与zip文件
+				this.deleteFile(defaultDir,projectInfo.getId());
 			}
 		}
 	}
 
+	public void deleteFile(String defaultDir,Long id){
+		String dir = defaultDir+"/"+id;
+		String file = defaultDir+"/"+id+".zip";
+		// 多条命令执行
+		String[] cmds = {"/bin/sh", "-c", "cd "+defaultDir+" && rm -rf "+file +" "+ dir};
+		System.out.println("开始执行命令:" + Arrays.toString(cmds));
+		//主要在这步写入后调用命令
+		try {
+			Process process = Runtime.getRuntime().exec(cmds);
+			process.waitFor();
+		}catch (Exception e){
+			throw new ServiceException("删除时出现异常");
+		}
+	}
+
+
 	/**
-	 * 压缩指定路径下的文件夹-直接执行linux命令,多线程,速度快几十倍
+	 * 压缩指定路径下的文件夹
 	 *
 	 * @param
 	 * @throws Exception