2011-09-13 4 views
2

でファイルポストを読む:このような私は、このようにHTMLページを持っているのHttpServletRequest

<FORM METHOD="POST" ACTION="http://localhost:8080/Appli/page/public/envoiPjExterne.seam" enctype="multipart/form-data"> 
    <input type="file" size="70" name="file" /><br />  
    <INPUT type="submit" value="Submit"> 
</FORM> 

とサーブレットを:

protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { 

DiskFileUpload upload = new DiskFileUpload(); 
upload.setSizeMax(10000000);// 10 Mo 
List items; 
try { 
     items = upload.parseRequest(request); 
     Iterator itr = items.iterator(); 
     while(itr.hasNext()) { 
      FileItem item = (FileItem) itr.next(); 
     } 
    } catch (FileUploadException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

マイリスト「の項目を」常に空です!

答えて

0

Filterがリクエスト/レスポンスチェーンにあり、すでにmultipart/form-dataリクエストを自動的に解析している場合に発生します。リクエストボディは1回だけ解析できます(クライアントはアップロードされたファイルを何度も再送信しません)。それを解析する2回目の試みは何も起こりません。

フォームのアクションURLのファイル拡張子envoiPjExterne.seamは、JSF/Seamを使用していることを示しています。これは多くの場合、RichFacesとよく似ていますが、実際にはそのようなフィルタが付いています。

  • は、JSF /シームビューに提出しないでください:

    は、この問題を解決するための2つの方法があります。サーブレットをJSF/SeamでカバーされていないユニークなURLパターンにマップし、代わりにフォームアクションがそのサーブレットをポイントするようにします。例えば。 action="uploadServlet"

  • ファイルのアップロードを処理するためにサーブレットを使用しないでください。 RichFacesの独自の<rich:fileUpload>コンポーネントを単純なJSFバッキングBeanで使用します。

関連する問題