2013-07-15 74 views
0

我使用以下代碼上傳文件,目前它上傳文件時沒有<..>但是我希望上傳XML文件。我如何上傳文件?使用Java Servlet上傳XML

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    boolean isMultipart = ServletFileUpload.isMultipartContent(request); 

    if(isMultipart){ 
     FileItemFactory factory = new DiskFileItemFactory(); 
     ServletFileUpload upload = new ServletFileUpload(factory); 
     try{ 
      List<FileItem> fields = upload.parseRequest(request); 
      Iterator<FileItem> it = fields.iterator(); 
      while (it.hasNext()) { 
       FileItem fileItem = it.next(); 

       out.println(fileItem.getString()); 
      } 
     }catch (FileUploadException e) { 
      e.printStackTrace(); 
     }  
    } 
} 

編輯: 例如,如果我上傳包含Screens><ScreenScreens>一個文件被輸出。

+0

該servlet將接受任何類型的文件,XML或其他。你有問題嗎? – fvu

+0

它正在接受這些文件,但是當我嘗試將文件輸出到屏幕時,它不會從'< >'開始輸出任何內容。 – Colin747

+0

編輯原創問題。 – Colin747

回答

1

我沒有立即看到的問題與您的代碼,但由於

response.setContentType("text/html;charset=UTF-8"); 

你在接收端告訴瀏覽器它正在獲取html,因此它會嘗試將它接收的數據解釋爲HTML。嘗試發送出來的數據使用正確的內容類型:

response.setContentType("application/xml;charset=UTF-8"); 

令我百思不解的是標記你的話:Screens><Screen這不是有效的XML。如果更正內容類型不起作用,則可以將真實測試(類似於最小數據樣本的測試)與有效輸出一起添加到您的問題中。

0

如果您在瀏覽器中查看輸出,然後嘗試查看源代碼:

對於IE瀏覽器 - 右鍵單擊​​頁面,選擇「查看源文件」

對於FF &瀏覽器 - 右鍵點擊在頁面上,選擇「查看頁面源代碼」

+0

當我查看源時只輸出'Screens>'。 – Colin747