首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Web 上傳壓縮文件並複製到指定路徑:Apache Commons IO FileUtils.copyFile

     編輯:程式設計綜合問答

核心代碼

// Spring MVC 控制器示例
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, RedirectAttributes ra) {
    if (file.isEmpty()) return "error";
    try {
        String destPath = "/data/uploads/" + file.getOriginalFilename();
        File destFile = new File(destPath);
        // 確保父目錄存在
        destFile.getParentFile().mkdirs();
        // 核心:一行代碼完成複製
        FileUtils.copyFile(file.getInputStream(), destFile); // 或 copyInputStreamToFile
        ra.addFlashAttribute("msg", "上傳成功:" + destPath);
    } catch (IOException e) {
        log.error("複製失敗", e);
        ra.addFlashAttribute("msg", "上傳失敗:" + e.getMessage());
    }
    return "redirect:/list";
}

關鍵點

  • MultipartFile.transferTo(destFile) 更高效(底層可能用 FileChannel.transferTo 零拷貝),但要求目標文件系統支持;FileUtils.copyFile 通用性更強。
  • 上傳大文件建議配置 spring.servlet.multipart.max-file-size、max-request-size。
  • 生產環境應生成唯一文件名(UUID+原後綴),避免覆蓋與路徑遍歷攻擊。

依賴坐標

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

進階:解壓縮處理

若需解壓 ZIP 內容而非整包存儲,使用 ZipInputStream 遍歷條目寫入目標目錄,或引入 zeroturnaround/zt-zip 簡化 API。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved