2011-09-13 23 views
4

1回のリクエストで複数のファイルをアップロードしようとしています。私のコードは次のようになります。複数のファイルを再生して再生しますか?

<form action="/application/overviewsubmit" method="POST" enctype="multipart/form-data"> 
<input type="file" name="files"> 
<input type="file" name="files"> 
<input type="submit" value="Run..."> 
</form> 

とコントローラ:

public static void overviewSubmit(List<File> files){ 
System.out.println(files); 
} 

両方のファイルは、それが動作するユーザーによって設定されている場合。しかし、ユーザが1つだけを選択して残りの1つをそのまま残すと、ファイルは常にnullです。

答えて

7

私はハッキリした方法を見つけました。

あなたがFile fake引数なしでmultipart/form-dataを処理しません方法をplay.data.Upload

public static void overviewsubmit(File fake) { 
    List<Upload> files = (List<Upload>) request.args.get("__UPLOADS"); 
    for(Upload file: files) { 
     Logger.info("Size = %d", file.getSize()); 
    } 
} 

play.data.*をインポートする必要があり、あなたは空request.argsの配列を取得します。誰もがそれのためのプレイ/標準注釈を知っている場合、私に知らせて:)

あなたは他の有用な機能のためにこれを確認することができます - http://www.playframework.org/documentation/api/1.2.3/play/data/FileUpload.html

は、それはあなたの問題を解決していただければ幸いです。

0

私は同じ問題がありましたが、複数のitensの入力フィールドがありました。

<input type="file" multiple="multiple" name="file" > 

問題は、アクションパラメータで、リストの代わりに配列を使用して解決された:

public static void overviewSubmit(File[] files){ 
    System.out.println(files); 
} 
関連する問題