多文件上传播放?

时间:2011-09-13 11:49:56

标签: file frameworks upload playframework

我尝试使用一个请求上传多个文件。我的代码如下所示:

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

如果两个文件都由用户设置,则可以使用。但是,如果用户只选择其中一个并保持另一个不受影响,文件始终为空。

2 个答案:

答案 0 :(得分:7)

我发现了一种hackish方式。

您必须导入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

希望它能解决你的问题。

答案 1 :(得分:0)

我遇到了同样的问题但是有多个项目的输入字段。

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

在操作参数中使用数组而不是List来解决问题:

public static void overviewSubmit(File[] files){
    System.out.println(files);
}