想要添加表单字段并在servlet中获取它

时间:2012-08-09 13:38:27

标签: java servlets

我正在寻找如何将图像添加到表单然后找到These codes。在集成此代码时,我失败了,因为我在提交表单时要在表单中发布其他字段。

那么请你帮我发一个字段 Lastname 以及该文件,并展示如何使用它来获取它(servlet中的代码块以获取姓氏)的servlet。

2 个答案:

答案 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 
                                 }