Передача параметров вместе с формой загрузки нескольких частей / данных формы (Java Http Post Upload)
У меня есть база кода, которая в настоящее время загружает файл с помощью 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 ответа
Если isFormField
на 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
принимает второй параметр, который представляет собой кодировку charset, вам может потребоваться указать тот, который подходит для вашего сайта.
Чтобы отправить параметр с помощью FileUpload, его просто нужно добавить в URL в методе setAction следующим образом:
formPanel.setAction ("< ProjectURL> /< YourServletName>?< YourParameterName> =" + параметр);
А в вашем сервлете просто получите параметр следующим образом:
req.getParameter ("< YourParameterName>");
Надеюсь, поможет;-)
Подобные решения:
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);
}