将表单的enctype设置为" multipart / form-data"后,request.getParameterNames()为空。

时间:2015-04-28 05:07:51

标签: jsp servlets file-upload

我正在使用JSP开发一个简单的文件上传,一切正常,直到我将表单的enctype设置为" multipart / form-data",request.getParameterNames()返回空。有什么想法吗?

这是我的代码:

upload.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>File Upload</title>
    </head>
    <body>
        <form method="POST" action="login.jsp" enctype="multipart/form-data">
            <input type="text" name="name" placeholder="File Name"></input>
            <br>
            <input type="file" name="file" id="file"></input>
            <br><br>
            <input type="submit" name="submit" id="submit" value="Submit"></input>
        </form>
    </body>
    </html>

的login.jsp

<%@page import="java.util.Enumeration"%>
<%@page import="java.io.InputStream"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
            Enumeration params = request.getParameterNames();
            boolean empty = true;
            while(params.hasMoreElements()){
                String param = params.nextElement().toString();
                out.println(param);
                empty = true;
            }
            if(empty) out.println("No parameters received!");
        %>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

请看这里: Convenient way to parse incoming multipart/form-data parameters in a Servlet

在servlet端以不同方式解析multipart。 在servlet规范3中,你需要调用'getParts()',在较旧的规范上你可能想要考虑第三方,比如Apache FileUpload。

答案 1 :(得分:1)

此问题是由enctype="multipart/form-data"引起的,因此您可以使用@MultipartConfig注释(javaee6servlet 3.0之后可用)或commans-fileupload,如下所示帖子:

request.getParameter on a submit button giving null value

Get parameter when multipart request in JSP