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

JSP 文件上傳:本地測試正常但局域網客戶端報 FileNotFoundException 的根因

     編輯:程式設計綜合問答

錯誤代碼分析

String filename = request.getParameter("image"); // 錯誤:獲取的是文件名而非文件內容
FileInputStream str = new FileInputStream(filename); // 服務器嘗試讀取客戶端本地路徑

核心誤區

  • `request.getParameter` 無法獲取上傳文件的二進制內容,只能獲取普通表單字段。
  • 文件上傳需使用 `multipart/form-data` 編碼,並通過 `request.getPart("image")` (Servlet 3.0+) 或 Apache Commons FileUpload 解析得到 `InputStream`。
  • 客戶端文件路徑(如 `C:\Users\...`)在服務器不可訪問,導致 `FileNotFoundException`。

正確實現(Servlet 3.0+ 標準 API)

@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Part filePart = req.getPart("image"); // 對應 
        try (InputStream fileContent = filePart.getInputStream()) {
            // 直接操作 fileContent 存入數據庫或寫入服務器磁盤
            // pstmt.setBinaryStream(1, fileContent, filePart.getSize());
        }
    }
}

表單必要屬性

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="image" accept="image/*">
    <button type="submit">上傳</button>
</form>

JSP 文件上傳 FileNotFoundException,request.getParameter 無法獲取文件流,multipart/form-data 編碼,Servlet 3.0 Part API 正確用法。

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