Множественная загрузка файла с PlayFramework
Я пытаюсь загрузить несколько файлов одновременно с Play Framework,но я всегда получаю первое изображение для каждого загруженного. Вот конкретный случай:
HTML :
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="file" name="image" />
<input type="file" name="image" />
<input type="file" name="image" />
<input type="submit" name="submit" value="Send images" />
</form>
Контроллер:
public static void upload() {
File[] images = params.get("image", File[].class);
for (File f : images) {
Logger.info (f.getName());
}
}
Если я загружаю image1.формат JPG, рис2.jpg, изображение 3.jpg и image4.jpg, то Logger.info
на консоли отобразится :
image1.jpg
image1.jpg
image1.jpg
image1.jpg
Другие изображения не будут использоваться.
Я пробовал с List<File>
вместо File[]
, но это тоже не работает.
Я и видел там вид такой же вопрос здесь на так (здесь ), что используйте это в качестве ответа:
List<Upload> files = (List<Upload>) request.args.get("__UPLOADS");
Но это не работает в версии v1. 2. 4 игры!.
Я использую играть В1.2.4.
Большое спасибо за вашу помощь!
3 ответа:
Ну, я открыл билет в игре! Рамки, потому что это кажется проблемой, и, по-видимому, я не единственный, кто имеет такое поведение.
Я протестировал с новым 1.2.5, и проблема исправлена, по крайней мере, с решением, которое я дал на вопрос:
public static void upload() { File[] images = params.get("image", File[].class); for (File f : images) { Logger.info (f.getName()); } }
Примечание: я использую Java 7!
Используйте автоматическую привязку вместо поиска в парах:
public class Application extends Controller { public static void index() { render(); } public static void upload(File[] files) { for (File file : files) { Logger.info(file.getName()); } index(); } }
Шаблон представления:
#{extends 'main.html' /} #{set title:'Home' /} #{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="Send it..." /> #{/}
Загрузка нескольких файлов с помощью play?
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, и вы получите пустой запрос.массив args. Если кто-нибудь знает аннотацию пьесы / стандарта для нее, дайте мне знать:)