我尝试使用一个请求上传多个文件,但它始终出错,我的查看代码:
<input type="file" name="files[]" multiple>
和
public static void doUpload(File[] files) {
File dir = new File(Play.applicationPath+File.separator+"public"+File.separator+"uploads");
if (!dir.exists()) {
dir.mkdirs();
}
boolean success = files.renameTo(new File(dir, files.getName()));
if (!success) {
renderText("{'success':'true', 'msg':{'url':'"+files.getName()+"'}}");
} else {
renderText("{'success':'true'}");
}
}
如果我使用<input type="file" name="files">
使用File files
上的单个文件上传和使用{{1}}的控制器中的参数,那么它可以正常工作。
答案 0 :(得分:1)
如果您有多个具有相同名称的输入,控制器将接收具有给定名称的数组作为数组,例如
控制器:
public static void upload(File[] files) {
...
}
查看:
#{form @upload(), enctype:'multipart/form-data'}
<input type="file" name="files">
<input type="file" name="files">
<input type="file" name="files">
<input type="submit" value="Upload" />
#{/form}
您可以随时添加一些javascript以允许用户在客户端添加其他输入
答案 1 :(得分:0)
这在Play 1.2.5中使用<input type="file" name="files" multiple>
中的多个标记可以正常工作。我在原始海报代码中看到的唯一问题是name="files[]"
应该是name="files"
可能是早期版本的Play中也存在一个错误,但这对我有用(我选择了50个带有一个文件输入的文件)