загрузка нескольких файлов с игрой? - PullRequest
4 голосов
/ 13 сентября 2011

Я пытаюсь загрузить несколько файлов одним запросом.Мой код выглядит следующим образом:

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

Если оба файла установлены пользователем, он работает.Но если пользователь выбирает только один из них и оставляет другой нетронутым, files всегда имеет значение null.

Ответы [ 2 ]

7 голосов
/ 27 сентября 2011

Я нашел хакерский путь.

Вы должны импортировать 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

Надеюсь, это решит вашу проблему.

0 голосов
/ 08 марта 2015

У меня была та же проблема, но с полем ввода для нескольких итенов.

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

Проблема была решена с использованием массива вместо List в параметрах действия:

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