1

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

因此,您能否帮我发布一个字段Lastname以及文件,并展示如何使用相同的 servlet 获取它(servlet 中的代码块以获取姓氏)。

4

2 回答 2

2

您正在混合使用 Apache Commons FileUploadServlet 3.0 @MultipartConfig。这两种是解析multipart/form-data请求的完全不同的方式。一个 HTTP 请求只能解析一次。因此,如果这两种方式中的一种已经事先解析过,另一种方式将无法再解析它并最终得到空/空数据。

您应该使用一种另一种方式来解析请求,而不是两种方式。multipart/form-dataApache 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()来获取上传的文件。

也可以看看:

于 2012-08-09T14:21:13.147 回答
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 
                                 }
于 2012-08-09T13:54:28.050 回答