JSP表单在servlet中发送包含文件的数据

时间:2015-06-23 13:28:17

标签: java jsp servlets post get

我尝试将一些数据从jsp表单发送到servlet。除了type="text"之外,我的所有数据都是type="file。我知道如果我想将数据发送到我的servlet,我必须使用request.getParameter(...)。(我的数据)In为了不为null,我必须使用method="get"。但如果我想上传文件,我必须使用method="post"。如何使用一个表单将这两种类型传递给我的servlet?提前感谢!

的.jsp

<form method="post" action="Servlet">
user:<input type="text" name="user"/>
img<input type="file" name="img"/>
</form>

Servlet.java

doPost(req,resp){
user = req.getParameter("user");//user == NULL
}

OR

的.jsp

<form method="get" action="Servlet">
user:<input type="text"/>
img<input type="file"/>
</form>

Servlet.java

doGet(req,resp){
//img not passed
}

1 个答案:

答案 0 :(得分:1)

形式:

<form id="uploadForm" name="uploadForm" action="UploadServlet" method="post" enctype="multipart/form-data">
    user:<input type="text" name="user"/>
    img<input type="file" name="image"/>
</form>

你仍然可以通过邮寄请求获得两者:

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    InputStream fileContent = null;
    String user = "";
    for (FileItem item : items) 
    {
        if (item.isFormField()) 
        {
            String fieldName = item.getFieldName();
            String fieldValue = item.getString();
            if(fieldName.equalsIgnoreCase("user"))
            {
                user = fieldValue;
            }
        }
        else 
        {
            String fieldName = item.getFieldName();
            if(fieldName.equalsIgnoreCase("image"))
            {
                fileContent = item.getInputStream();
            } 
        }
    }
}

这只是如何使用文件类型处理post请求的示例。