• springboot多文件上传、删除、下载到项目本地


    package com.example.demo.document;
    
    import cn.hutool.core.io.FileUtil;
    import cn.hutool.core.io.IoUtil;
    import cn.hutool.core.util.IdUtil;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    
    /**
     * 文件上传、下载、删除
     */
    public class DocumentParse {
        /**
         * 文件批量上传
         */
        public void batchUpload(MultipartFile[] files, HttpServletRequest request) {
            // 定义文件上传路径
            String path = "";
            if (files.length > 0) {
                for (MultipartFile file : files) {
                    String originalFilename = file.getOriginalFilename();
                    String id = IdUtil.createSnowflake(1, 1).nextIdStr();
                    String filePath = path + id + originalFilename.substring(originalFilename.lastIndexOf("."));
                    try {
                        file.transferTo(new File(filePath));
                    } catch (Exception e) {
    
                    }
                }
            }
        }
    
        /**
         * 下载
         *
         * @param response
         */
        public void download(HttpServletResponse response) {
            String filePath = "文件上传路径";
            String fileName = "文件名称(包括文件格式)";
            try {
                // 创建输出流对象
                ServletOutputStream outputStream = response.getOutputStream();
                //以字节数组的形式读取文件
                byte[] bytes = FileUtil.readBytes(filePath);
                // 设置返回内容格式
                response.setContentType("application/octet-stream");
                // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
                // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
                // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
                fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
                // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
                response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
                // 返回数据到输出流对象中
                outputStream.write(bytes);
                // 关闭流对象
                IoUtil.close(outputStream);
            } catch (Exception ignored) {
    
            }
        }
    
        /**
         * 删除
         */
        public void delete() {
            String filePath = "文件上传路径";
            File file = new File(filePath);
            if (file.exists()) {
                file.delete();
            }
        }
    
    
    }

    来源:https://www.cnblogs.com/good--luck/p/15828582.html

  • 相关阅读:
    有序向量
    无序向量
    设计模式入门
    策略模式
    面向对象相关知识点
    MySQL数据库知识培训
    数据库业务规范
    go最小路径
    go求质数
    CSS3
  • 原文地址:https://www.cnblogs.com/konglxblog/p/16441385.html
Copyright © 2020-2023  润新知