我正在寻找如何将图像添加到表单然后找到These codes。在集成此代码时,我失败了,因为我在提交表单时要在表单中发布其他字段。
那么请你帮我发一个字段 Lastname 以及该文件,并展示如何使用它来获取它(servlet中的代码块以获取姓氏)的servlet。
答案 0 :(得分:2)
您正在混合Apache Commons FileUpload 和 Servlet 3.0 @MultipartConfig
。这两个是完全不同的解析multipart/form-data
请求的方法。 HTTP请求只能解析一次。因此,如果这两种方法中的一种事先已经解析过它,那么另一种方法将无法再解析它并最终得到空/空数据。
您应该使用其中一种或来解析请求,而不是两种方式。 Apache Commons FileUpload是在引入Servlet 3.0之前解析multipart/form-data
请求的“事实上的”标准(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()
来获取上传的文件。
答案 1 :(得分:0)
这个问题有点令人困惑,你想在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
}