自动化立体仓库 - WMS系统
#
LSH
2023-12-07 85c7878f5a7792baecaee357cab58a75d207024b
#
1个文件已添加
273 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/utils/FileSaveExampleUtil.java 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/FileSaveExampleUtil.java
New file
@@ -0,0 +1,273 @@
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 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 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<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;
//            this.path = path;
        }
        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);
//    }
}