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

JSP 文件上傳:本地正常但局域網其他機器報 FileNotFoundException 的深度排查

     編輯:程式設計綜合問答

核心矛盾

本地測試使用本地絕對路徑(如 `D:\img.jpg`)上傳成功,局域網其他機器瀏覽同一 JSP 頁面上傳時,服務器嘗試讀取**客戶端本地路徑**,導致 `FileNotFoundException`。

根因確認

  • 代碼使用 `request.getParameter("image")` 獲取文件名,再 `new FileInputStream(filename)` 讀取。
  • 這要求服務器能訪問客戶端文件系統,**絕不可能**(除非共享目錄並映射盤符,極不推薦)。

徹底解決:標準文件上傳流程

  1. 表單設置 `enctype="multipart/form-data"`。
  2. 後端使用 `request.getPart("image")` (Servlet 3.0) 或 `Commons FileUpload` 解析流。
  3. 直接操作 `InputStream` 存入數據庫/磁盤,**不涉及客戶端路徑**。

驗證方法

在本地測試時,刻意選擇**非服務器機器上的路徑**(如 U 盤、網絡鄰居路徑),若仍「成功」,說明代碼實際讀取的是服務器端同名文件,而非真正上傳內容——極具欺騙性。

JSP 文件上傳局域網失敗,getParameter 獲取文件名非流,multipart/form-data 標準上傳流程,Servlet 3.0 Part API 代碼示例。

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