Множественная загрузка файла с 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 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. Если кто-нибудь знает аннотацию пьесы / стандарта для нее, дайте мне знать:)