Как получить несколько значений из поля выбора с помощью загрузки файла Commons?

Обновление: проблема заключалась в самом компоненте Flash. Неправильная компиляция нескольких значений из элемента. Я уведомил разработчиков, и они реализовали обходной путь. Commons FileUpload поддерживает несколько значений для принятого ответа.

У меня есть форма enctype = "multipart / form-data" с одним

<select name="XX" multiple="multiple">

и компонент загрузки Flash, который позволяет пользователю выбирать несколько файлов. При обработке POST с помощью Apache Commons FileUpload я обнаруживаю поле select через

item.isFormField() == true

и продолжайте извлекать детали через

// Process a regular form field
if (item.isFormField()) {
    String name = item.getFieldName();
    String value = item.getString();
}

У меня проблема в том, что item.getString (); возвращает только первое выбранное значение из поля select; независимо от того, сколько предметов я выберу, я получаю только первый предмет.

Точно так же, когда я использую стандартный метод сервлета для извлечения параметров, т.е.

final String[] values = request.getParameterValues("XX");

values ​​пуст, что, как я предполагаю, связано с тем, что форма закодирована как multipart.

Как я могу получить эти несколько выбранных значений из поля с множественным выбором?

Этот (без ответа) вопрос также был на форумах Sun другим автором. .


person Robert Campbell    schedule 29.09.2009    source источник
comment
Какой компонент загрузки flash-памяти вы используете? в основном у меня такое же требование, но я не могу получить правильный компонент для загрузки флеш-памяти.   -  person jay    schedule 07.11.2009
comment
element-it.com/multipowupload.aspx Мне это очень нравится, и У разработчика был очень быстрый поворот с того момента, как я впервые сообщил об ошибке, до выпуска исправленной версии для меня.   -  person Robert Campbell    schedule 07.11.2009


Ответы (2)


Фактически, несколько элементов могут иметь одно и то же fieldName, вам просто нужно добавить все строковые значения элементов для одного и того же fieldName в коллекцию String, а затем преобразовать эту коллекцию в массив.

Нашел там некоторую информацию: http://www.nabble.com/RES:-File-Upload-td25910926.html

person mably    schedule 24.10.2009
comment
ОШИБКА HTTP: 404 - person Ted Yu; 05.07.2019

Вышеупомянутая ссылка не работает, и если кто-то еще сталкивается с той же проблемой, вот как получить все значения -

получить несколько значений из поля выбора с помощью загрузки файла Commons -

   List items = upload.parseRequest(request);
   Iterator iter = items.iterator();

    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();

        if (item.isFormField()) {
           String name = item.getFieldName();
           String value = item.getString();

        if (name.equals("multi-select"))
            completeSet = value;
     }

тогда completeSet будет только первое значение. все остальные значения множественного выбора также находятся в элементе с таким же именем (здесь множественный выбор). Итак, все, что вам нужно сделать, это получить все значения одно за другим, а затем преобразовать их в требуемый тип данных (т.е. собрать все в списке и преобразовать его в String [] :)) Например,

List<String> completeSet=new ArrayList<String>();
if(name.equals("multi-select"))
     completeSet.add(value);

Таким образом, в конце completeSet будет иметь весь набор значений.

person freesoul    schedule 07.10.2016