我有一个表单,其中包括文件上传部分和几个输入字段。我正在使用request.getParameter()
从jsp获取值到servlet中。但是当我添加encrypt=multipart
时,request.getParameter()
不起作用,它返回null。我知道multipart不支持request.getParameter()
。是否有任何解决文件上传的方案,同时我也想使用request.getParameter()
。
针对这种需求,Apache Commons库会非常有用。
参考链接:http://javakart.blogspot.in/2012/11/file-upload-example-using-servlet.html http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
//this will help you identify request is of type multipart or not.
一旦您检查请求,使用库解析请求并获取表单字段和文件项。
例如:
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
// Process regular form field (input type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();
// ... (do your job here)
} else {
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = FilenameUtils.getName(item.getName());
InputStream filecontent = item.getInputStream();
// ... (do your job here)
}
}
request.getParameter()
及其相关方法无法处理多部分请求,当处理多部分表单数据时,它们总是返回null。
如果您想使用request.getParameter()
,则可以使用commons FileUpload。
@MultipartConfig
注释您的servlet,然后使用getParts()
方法访问部件。 您正在使用Servlet 3.0,对吗?