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

Java Web 圖片上傳路徑錯誤:FileNotFoundException 含雙重磁盤路徑

     編輯:程式設計疑難解答

異常堆疊關鍵行

java.io.FileNotFoundException: 
C:\mysoftware\apache-tomcat-7.0.37\webapps\friend2\upload\pic_3\E:\David_Liu\picture\Peter_Jackson.jpg
(文件名、目錄名或卷標語法不正確。)

根因

代碼將**客戶端完整本地路徑**(E:\David_Liu\picture\Peter_Jackson.jpg)直接拼接到服務端儲存目錄後,導致路徑包含兩個盤符(C:\...pic_3\E:\...),Windows 無法識別。

錯誤代碼模式

String savePath = baseDir + File.separator + clientFileName; // clientFileName 含 E:\...

修正方案

  1. **只取文件名**:String fileName = new File(clientFileName).getName();
  2. **生成唯一文件名**:UUID + 原始後綴,避免重名與路徑注入。
    String ext = fileName.substring(fileName.lastIndexOf('.'));
    String uniqueName = UUID.randomUUID().toString() + ext;
    File dest = new File(uploadDir, uniqueName);
  3. **數據庫僅存相對路徑/文件名**,展示時拼接 Web 訪問路徑。

安全加固

  • 校驗副檔名/MIME 類型,防止腳本上傳。
  • 限制文件大小,防止磁盤耗盡。
  • 上傳目錄配置為不可執行(Nginx/Apache 禁用腳本解析)。

切記:**永遠不要信任客戶端傳來的原始路徑**。取名、重命名、落庫三步走,文件上傳零事故!

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