From bf2fbd9f3e90dd2ef508c5944ae63491397b42ae Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期六, 04 十一月 2023 10:35:26 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java | 177 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 158 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java b/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java
index e599ad4..20892a0 100644
--- a/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java
+++ b/src/main/java/com/zy/crm/common/utils/FileSaveExampleUtil.java
@@ -1,14 +1,23 @@
package com.zy.crm.common.utils;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
+import org.springframework.core.io.Resource;
+
+import java.net.URLEncoder;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
-
-import lombok.Data;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.core.io.UrlResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import lombok.Data;
public class FileSaveExampleUtil {
@@ -52,19 +61,19 @@
// }
// }
- public static void saveFile(MultipartFile file, String savePath) throws IOException {
- // 鍒涘缓淇濆瓨鏂囦欢鐨勭洰褰曪紙濡傛灉涓嶅瓨鍦級
- File directory = new File(savePath);
- if (!directory.exists()) {
- directory.mkdirs();
- }
-
- // 淇濆瓨鏂囦欢
- String fileName = file.getOriginalFilename();
- String filePath = savePath + fileName;
- File dest = new File(filePath);
- file.transferTo(dest);
- }
+// public static void saveFile(MultipartFile file, String savePath) throws IOException {
+// // 鍒涘缓淇濆瓨鏂囦欢鐨勭洰褰曪紙濡傛灉涓嶅瓨鍦級
+// File directory = new File(savePath);
+// if (!directory.exists()) {
+// directory.mkdirs();
+// }
+//
+// // 淇濆瓨鏂囦欢
+// String fileName = file.getOriginalFilename();
+// String filePath = savePath + fileName;
+// File dest = new File(filePath);
+// file.transferTo(dest);
+// }
public static void deleteFilesInDirectory(String directoryPath) {
File directory = new File(directoryPath);
@@ -78,6 +87,128 @@
}
}
}
+ }
+ }
+
+// public static FileDTO downloadFile(String directoryPath,HttpServletResponse response) {
+// File file = new File(directoryPath);
+// if (file.exists()) {
+// try {
+// response.setContentType("application/vnd.ms-excel");
+// response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
+//
+// FileInputStream fileInputStream = new FileInputStream(file);
+// OutputStream outputStream = response.getOutputStream();
+// byte[] buffer = new byte[1024];
+// int length;
+// while ((length = fileInputStream.read(buffer)) != -1) {
+// outputStream.write(buffer, 0, length);
+// }
+// outputStream.flush();
+// outputStream.close();
+// fileInputStream.close();
+//
+// return new FileDTO(true, file.getName(), null);
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+// }
+//
+// return new FileDTO(false, null, "鏂囦欢涓嶅瓨鍦�");
+//
+//
+// }
+
+// public static void downloadFile(String directoryPath,HttpServletResponse response) {
+// try {
+//// File file = new File(directoryPath);
+//// InputStream inputStream = new FileInputStream(file);
+//// //杈撳嚭鏂囦欢
+//// InputStream fis = new BufferedInputStream(inputStream);
+//// byte[] buffer = new byte[fis.available()];
+//// fis.read(buffer);
+//// fis.close();
+//// response.reset();
+////
+//// //鑾峰彇鏂囦欢鐨勫悕瀛楀啀娴忚鍣ㄤ笅杞介〉闈�
+//// String name = file.getName();
+//// response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "iso-8859-1"));
+//// response.addHeader("Content-Length", "" + file.length());
+//// OutputStream out = new BufferedOutputStream(response.getOutputStream());
+//// response.setContentType("application/octet-stream");
+//// out.write(buffer);
+//// out.flush();
+//// out.close();
+// File file = new File(directoryPath);
+// if (!file.exists()) {
+// // 鏂囦欢涓嶅瓨鍦紝鍙互鏍规嵁瀹為檯鎯呭喌杩涜澶勭悊
+// return;
+// }
+//
+// response.reset();
+// response.setContentType("application/octet-stream");
+// response.setContentLength((int) file.length());
+// response.setHeader("Content-Disposition", "attachment;filename=" + file.getName());
+//
+// BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
+// BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
+// byte[] buffer = new byte[4096];
+// int bytesRead;
+// while ((bytesRead = bis.read(buffer)) != -1) {
+// bos.write(buffer, 0, bytesRead);
+// }
+// bos.flush();
+//
+// bis.close();
+// bos.close();
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+// }
+
+ public static ResponseEntity<Resource> downloadFile(String filename, HttpServletResponse response) {
+ try {
+ File file = new File(filename);
+ //鑾峰彇鏂囦欢鐨勫悕瀛楀啀娴忚鍣ㄤ笅杞介〉闈�
+ String name = file.getName();
+
+ // 鏋勫缓鏂囦欢璺緞
+ Path filePath = Paths.get(filename);
+ Resource resource = new UrlResource(filePath.toUri());
+
+ if (resource.exists()) {
+ // 璁剧疆鍝嶅簲澶�
+ HttpHeaders headers = new HttpHeaders();
+// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+ response.setContentType("application/octet-stream");
+ headers.setContentDispositionFormData("attachment", filename);
+ response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "UTF-8"));
+// headers.setContentDispositionFormData("attachment", URLEncoder.encode(name, "UTF-8"));
+// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
+
+ // 杩斿洖鏂囦欢鍝嶅簲
+ return ResponseEntity.ok()
+ .headers(headers)
+ .body(resource);
+
+// // 璁剧疆鍝嶅簲澶�
+// HttpHeaders headers = new HttpHeaders();
+// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+// headers.setContentDispositionFormData("attachment", URLEncoder.encode(name, "UTF-8"));
+// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
+//
+// // 杩斿洖鏂囦欢鍝嶅簲
+// return ResponseEntity.ok()
+// .headers(headers)
+// .body(resource);
+ } else {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ return null;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ return null;
}
}
@@ -106,6 +237,8 @@
private String name;
private long size;
private String path;
+ private boolean success;
+ private String errorMessage;
public FileDTO(String name, long size, String path) {
this.name = name;
@@ -119,6 +252,12 @@
// this.path = path;
}
+ public FileDTO(boolean success, String name, String errorMessage) {
+ this.success = success;
+ this.name = name;
+ this.errorMessage = errorMessage;
+ }
+
// getters and setters
}
--
Gitblit v1.9.1