2011-09-13 36 views
4

我嘗試用一​​個請求上傳多個文件。我的代碼如下所示:帶文件上傳多文件?

<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); 
} 

如果兩個文件都是由它的工作原理用戶設置。但是,如果用戶只選擇其中一個,而另一個不改變,則文件始終爲空。

回答

7

我發現了一種駭人聽聞的方式。

你必須導入play.data.Uploadplay.data.*

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()); 
    } 
} 

沒有File fake參數的方法不會處理multipart/form-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); 
}