package com.zy.crm.common.utils; import java.io.*; import com.zy.crm.manager.entity.PlanUrl; import org.springframework.core.io.Resource; import java.net.URLEncoder; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; 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 { // public static void main(String[] args) { // String filePath = "D:/work/file/file.txt"; // 指定保存文件的路径 // // try { // String content = "这是要保存的文件内容"; // saveToFile(filePath, content); // System.out.println("文件保存成功!"); // } catch (IOException e) { // System.out.println("文件保存失败:" + e.getMessage()); // } // } public static void saveToFile(String filePath, String content) throws IOException { File file = new File(filePath); // 创建父目录(如果不存在) File parentDir = file.getParentFile(); if (!parentDir.exists()) { parentDir.mkdirs(); } // 将内容写入文件 try (OutputStream outputStream = new FileOutputStream(file)) { byte[] bytes = content.getBytes(); outputStream.write(bytes); } } // public static void main(String[] args) { // String savePath = "C:/path/to/save/"; // 指定保存文件的路径 // MultipartFile file = ...; // 获取要保存的MultipartFile文件 // // try { // saveFile(file, savePath); // System.out.println("文件保存成功!"); // } catch (IOException e) { // System.out.println("文件保存失败:" + e.getMessage()); // } // } // 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 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 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 viewFileList(String directoryPath) { List 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; // this.path = path; } public FileDTO(PlanUrl planUrl) { this.name = planUrl.getName(); this.size = planUrl.getFileSize(); this.path = planUrl.getUrl(); this.userName = planUrl.getUserName(); } public FileDTO(boolean success, String name, String errorMessage) { this.success = success; this.name = name; this.errorMessage = errorMessage; } // getters and setters } // public static void main(String[] args) { // String directoryPath = "/path/to/directory"; // deleteFilesInDirectory(directoryPath); // } }