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();
        }
    }


}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM