我有一个代码库,目前使用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 );
}
}
答案 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);
希望它有所帮助; - )