| package com.zy.asrs.utils; | 
|   | 
| import lombok.Data; | 
| import org.springframework.core.io.Resource; | 
| import org.springframework.core.io.UrlResource; | 
| import org.springframework.http.HttpHeaders; | 
| import org.springframework.http.ResponseEntity; | 
| import org.springframework.web.multipart.MultipartFile; | 
|   | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.io.File; | 
| import java.io.FileOutputStream; | 
| import java.io.IOException; | 
| import java.io.OutputStream; | 
| import java.nio.file.Path; | 
| import java.nio.file.Paths; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| public class FileSaveExampleUtil { | 
|   | 
|   | 
|     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); | 
|         if (directory.exists() && directory.isDirectory()) { | 
|             File[] files = directory.listFiles(); | 
|             if (files != null) { | 
|                 for (File file : files) { | 
|                     if (file.isFile()) { | 
|                         file.delete(); | 
|                         System.out.println("Deleted file: " + file.getAbsolutePath()); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|     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; | 
|         } | 
|     } | 
|   | 
|     public static List<FileDTO> viewFileList(String directoryPath) { | 
|         List<FileDTO> fileList = new ArrayList<>(); | 
|   | 
|         File directory = new File(directoryPath); | 
|         if (directory.exists() && directory.isDirectory()) { | 
|             File[] files = directory.listFiles(); | 
|             if (files != null) { | 
|                 for (File file : files) { | 
|                     if (file.isFile()) { | 
|                         FileDTO fileDTO = new FileDTO(file.getName(), file.length(), file.getAbsolutePath()); | 
| //                        FileDTO fileDTO = new FileDTO(file.getName(), file.length()); | 
|                         fileList.add(fileDTO); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|   | 
|         return fileList; | 
|     } | 
|   | 
|     @Data | 
|     public static class FileDTO { | 
|         private String name; | 
|         private long size; | 
|         private String path; | 
|         private String userName; | 
|         private boolean success; | 
|         private String errorMessage; | 
|   | 
|         public FileDTO(String name, long size, String path) { | 
|             this.name = name; | 
|             this.size = size; | 
|             this.path = path; | 
|         } | 
|   | 
|         public FileDTO(String name, long size, String path,String userName) { | 
|             this.name = name; | 
|             this.size = size; | 
|             this.path = path; | 
|             this.userName = userName; | 
|         } | 
|   | 
|         public FileDTO(String name, long size) { | 
|             this.name = name; | 
|             this.size = size; | 
|         } | 
|   | 
|         public FileDTO(boolean success, String name, String errorMessage) { | 
|             this.success = success; | 
|             this.name = name; | 
|             this.errorMessage = errorMessage; | 
|         } | 
|   | 
|     } | 
|   | 
| } |