我正在寻找如何将图像添加到表单然后我找到了这些代码。在集成此代码时我失败了,因为我在提交表单时要发布表单中的其他字段。
因此,您能否帮我发布一个字段Lastname以及文件,并展示如何使用相同的 servlet 获取它(servlet 中的代码块以获取姓氏)。
您正在混合使用 Apache Commons FileUpload和Servlet 3.0 @MultipartConfig
。这两种是解析multipart/form-data
请求的完全不同的方式。一个 HTTP 请求只能解析一次。因此,如果这两种方式中的一种已经事先解析过,另一种方式将无法再解析它并最终得到空/空数据。
您应该使用一种或另一种方式来解析请求,而不是两种方式。multipart/form-data
Apache Commons FileUpload 是在引入 Servlet 3.0(2009 年 12 月)之前解析请求的“事实上的”标准。但是从 Servlet 3.0 开始,有了新的@MultipartConfig
注解和新的request.getPart()
方法,使得 Apache Commons FileUpload 变得多余。
使用 Apache Commons FileUpload 时,您应该删除Servlet 3.0@MultipartConfig
和所有request.getParameter()
行并从中提取“常规”请求参数List items
。
使用 Servlet 3.0@MultipartConfig
时,您应该删除所有与 Apache Commons FileUpload 相关的代码,并使用它request.getPart()
来获取上传的文件。
这个问题有点令人困惑,你想在servlet中使用apache commons fileupload库并做这样的事情来抓取图像文件上传。
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory ();
ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
try {
/*
* Parse the request
*/
List items = uploadHandler.parseRequest(request);
Iterator itr = items.iterator();
while(itr.hasNext()) {
FileItem item = (FileItem) itr.next();
/*
* Handle Form Fields.
*/
if(item.isFormField()) {
//do stuff here if the item currently is not a file upload
}
else {
//DO stuff here to handle the file upload
}