我尝试使用一个请求上传多个文件。我的代码如下所示:
<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);
}
如果两个文件都由用户设置,则可以使用。但是,如果用户只选择其中一个并保持另一个不受影响,文件始终为空。
答案 0 :(得分:7)
我发现了一种hackish方式。
您必须导入play.data.Upload
或play.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
希望它能解决你的问题。
答案 1 :(得分:0)
我遇到了同样的问题但是有多个项目的输入字段。
<input type="file" multiple="multiple" name="file" >
在操作参数中使用数组而不是List来解决问题:
public static void overviewSubmit(File[] files){
System.out.println(files);
}