【问题标题】:request.getParameterNames() is empty after setting the form's enctype to "multipart/form-data" [duplicate]将表单的 enctype 设置为“multipart/form-data”后 request.getParameterNames() 为空 [重复]
【发布时间】:2015-04-28 05:07:50
【问题描述】:

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

这是我的代码:

上传.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>

【问题讨论】:

标签: jsp servlets file-upload


【解决方案1】:

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

multipart 在 servlet 端的解析方式不同。 在 servlet 规范 3 中,您需要调用“getParts()”,在较旧的规范中,您可能需要考虑使用 Apache FileUpload 等第 3 方。

【讨论】:

  • 如果您发现重复的答案,为什么不直接标记/投票赞成关闭为重复?
  • 坦率地说,我不知道这个选项。对不起。
【解决方案2】:

这个问题是由于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

【讨论】:

  • 我使用 JSP,我没有 servlet。在 JSP 中哪里插入 @MultipartConfig?
  • 如果没有 Servlet,你有什么样的项目?
  • 您也可以使用 MultipartFormDataRequest,这会更简单,而且使用 servlet 进行业务逻辑还有一个好处。
  • 如果您发现重复的答案,为什么不直接标记/投票赞成关闭为重复?
  • 因为我没有你那么有名气...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2019-11-06
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多