传递参数以及multipart / form-data上传表单(Java Http Post Upload)

时间:2011-06-30 15:10:08

标签: java post multipartform-data http-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 个答案:

答案 0 :(得分: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编码,您可能需要指定一个适合您网站的参数。

答案 1 :(得分:0)

类似的解决方案:

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);
}

答案 2 :(得分:0)

要使用FileUpload发送参数,只需将其添加到 setAction 方法中的网址中 如下:

formPanel.setAction("<的 ProjectURL > /<的 YourServletName > ?<的 YourParameterName > =&#34 +参数);

在您的servlet中,只需获取如下参数:

req.getParameter("<的 YourParameterName > &#34);

希望它有所帮助; - )