Передача параметров вместе с формой загрузки нескольких частей / данных формы (Java Http Post Upload) - PullRequest
2 голосов
/ 30 июня 2011

У меня есть кодовая база, которая в настоящее время загружает файл, используя Post, и имеет enctype как multipart / form-data. Теперь мне нужно включить некоторые элементы формы, то есть некоторые параметры также будут переданы вместе с загрузкой файла. Я создал свою HTML-форму, но я не могу использовать request.getParameter, потому что это многокомпонентная форма. Может ли кто-нибудь предложить мне, как мне передать параметры вместе с моим файлом загрузки. Я предоставляю коды ниже. Подскажите пожалуйста как обойти на основе совместимости моих кодов

if (!ServletFileUpload.isMultipartContent(request)) {
  throw new CustomUploadException("Not a file upload request");
}

ServletFileUpload  upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(request);

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

  if (item.isFormField() == false && 
      item.getFieldName().equalsIgnoreCase("xmlfile"))
  {
      String fileName = item.getName();
      myBean.setFileName(fileName );
  }

}

Ответы [ 3 ]

3 голосов
/ 30 июня 2011

Если isFormField on FileItemStream возвращает true, это нормальное поле. Вы можете использовать openStream и читать содержимое в строку.

Примерно так:

FileItemStream item = iter.next();
if(item.isFormField()) {
   // Normal field
   String name = item.getFieldName();
   String value = Streams.asString(item.openStream());
} else {
   // File
}

Streams.asString принимает второй параметр, который является используемой кодировкой кодировки, вам может потребоваться указать, подходящий для вашего сайта.

0 голосов
/ 17 ноября 2015

Чтобы отправить параметр с помощью FileUpload, его просто нужно добавить в URL в методе setAction Следующим образом:

formPanel.setAction ( "<<strong> ProjectURL > / <<strong> YourServletName > <? <strong> YourParameterName > = "+ параметр);

А в вашем сервлете просто получите параметр следующим образом:

req.getParameter ("<<strong> YourParameterName > ");

Надеюсь, это поможет; -)

0 голосов
/ 08 января 2014

Подобные решения:

FileItemStream item = iter.next();
if(item.isFormField()) {
    String value = item.getString();
}

или

FileItemStream item = iter.next();
if(item.isFormField()) {
   InputStream name = item.getInputStream();
   String value = Streams.asString(name);
}
...