簡體   English   中英

幫助使用Java / J2EE上傳文件

[英]Help with file upload in Java/J2EE

我需要使用帶有ProgressListener的Apache fileupload上傳文件,但與此同時,我還需要顯示進度欄以顯示上傳狀態。

實際需求是我只需要解析一個本地XML文件,就可以將xml解析為適當的對象並將其放入數據庫中。 我真的需要將文件上傳到服務器進行解析嗎? 當我在遠程服務器上無法正常運行時,正在遠程服務器上找不到文件之類的異常。

任何快速幫助將不勝感激。

提前致謝 !!!

如果您有權訪問服務器端,建議您調試上傳過程。 該異常表明您要基於上傳的文件名在服務器上打開文件。 在本地計算機上,這是可行的,因為它在同一文件系統上運行。 在服務器端,Apache FileUpload接收二進制數據,該二進制數據需要從請求數據流中提取:


@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
  if (ServletFileUpload.isMultipartContent(request)) {
    FileItemFactory factory = new DiskFileItemFactory(Integer.MAX_VALUE, null);
    ServletFileUpload upload = new ServletFileUpload(factory);
    List items = upload.parseRequest(request);
    for (FileItem item : items) {
       byte[] data = item.get();
       // do something with the binary data
    }
  } else {
    System.err.println("Not a multipart/form-data");
  }
}

而且您還需要以下形式:

<form name='frm' method="POST" action='UploadServlet' 
id="frm" enctype="multipart/form-data">

從您的描述中聽起來,您的servlet正在嘗試根據表單中提交的文件名從文件系統本身讀取文件。 如果servlet在文件所在的另一台機器上運行,那么這將無法正常工作。

確保您的Servlet是從fileupload API而不是從本地文件系統獲取文件內容的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM