文件上传servlet中的文本字段,Java

时间:2015-07-29 06:33:40

标签: java jsp servlets

在我的java应用程序中,我使用java servlet上传多个文件。 一切正常,直到我在表单中添加额外的文本字段。

我在添加文本字段时收到空文档。

这是我的代码: -

JSP表单: -

<form action="upload/servlet"  method="post" enctype="multipart/form-data">

        <table>
            <tr>
                <td>Upload File:&nbsp;</td>
                <td><input type="file" name="file" multiple/>
                </td>
                <td style="color: red; font-style: italic;"><form:errors
                        path="file" />
                </td>
            </tr>

            <tr>
                <td>Generate Key</td><td>&nbsp;</td>
                <td><a href="generateWebKey.do"><input type="button" value="Change Key"/></a>
                </td>
                <td>${key}</td>

            </tr>

            <tr>
                <td>Zip Code</td><td>&nbsp;</td>
                <td><input type="text" value="100001" name="zipcode"/>
                </td>
                <td>&nbsp;</td>
            </tr>

                <tr>
                <td>&nbsp;</td>
                <td><input type="submit" value="Upload" />
                </td>
                <td>&nbsp;</td>
            </tr>
        </table>

 </form>

这是我的servlet: -

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    if (!ServletFileUpload.isMultipartContent(req)) {
        resp.sendError(HttpServletResponse.SC_BAD_REQUEST,"Multipart content expected!");
    }
     ModelMap model = new ModelMap();

    try {
                    @SuppressWarnings("unchecked")
        List<FileItem> files = this.upload.parseRequest(req);
        String userName=req.getSession().getAttribute("username").toString();
        String fileName;
        String contentType;
        byte[] content;
        System.out.print("Zipcode is "+req.getParameter("zipcode"));
        for(FileItem item : files) {
            if(item.isFormField()){
            fileName = item.getName();
            contentType = item.getContentType();
            content = item.get();
            String id=this.indexDocument(fileName, contentType, content,userName,req);
            model.put(id, fileName);
            System.out.println("Done for  "+fileName+ "   id   "+id);
            }
        }

    } catch (FileUploadException e) {
        System.out.println("Error FileUploadException: "+e.getMessage());
        throw new ServletException(e);
    } 
    catch (Exception e) {
        e.printStackTrace();
        System.out.println("Error "+e.getMessage());
    }

    req.setAttribute("message", model);
    req.getSession().setAttribute("tmpRetMessage", model);
//  RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/success.do");
    //dispatcher.forward(req, resp);
    resp.sendRedirect("../success.do");
}

如果我添加两个文本字段,则会出现两次null文档错误。如果我添加三次然后三次收到错误。

1 个答案:

答案 0 :(得分:1)

此处形成enctype类型multipartenctype="multipart/form-data")。因此request.getParameter()值为null。因此,您需要分别处理file字段和常规字段,而不是filetextradio等。

see for more how to get request parameters