java - 为什么 servlet 不检索该部分?它显示 null 作为文件名

标签 java jakarta-ee servlets multipartform-data

html 片段向名为 servletservlet 发送一个 post 请求。请求的类型为 multipart/form-data。但 servlet 什么也没找到,并打印 null 作为我尝试检索的部分的名称。这是为什么 ?

<form method="post" action="servlet" enctype="multipart/form-data">
        <input type="file" value="browse" name="FileShared" />
        <input type="submit" value="submit" />
 </form>

import javax.servlet.http.Part;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

    @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/plain");
    //String fileName = request.getPart("FileShared").getName(); 
    // Throws a nullpointer exception if I don't comment the above statement
    PrintWriter writer = response.getWriter();
    //writer.println(fileName);
    Collection<Part> c = request.getParts();
    Iterator i = c.iterator();
    while(i.hasNext()) {
        writer.println("Inside while loop"); // This statement never gets printed
        writer.println(i.next());
    }
    writer.println("outside while loop"); // Only this statement gets printed
}

最佳答案

如果您想使用 Servlet 3.0 HttpServletRequest#getParts() 方法,那么您必须使用 @MultipartConfig 注释您的 servlet。

示例:

@WebServlet(urlPatterns={"/SampleServlet"})
@MultipartConfig
public class SampleServlet extends HttpServlet {

}

关于java - 为什么 servlet 不检索该部分?它显示 null 作为文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434988/

相关文章:

java - 我的最后一个java问题即使是我的教授也无法解决的问题

java - 使用 Google Maps API 部署 Android 应用程序时出错

java - 访问ehcache.xml中的spring环境变量

java - 安全漏洞 - Veracode 报告 - crlf 注入(inject)

jakarta-ee - servlet : "FileNotFoundException: log4j.properties"中log4j的配置

reactjs - 在 Servlet 环境中部署 React 应用程序

java - Dagger 1.2.2、Gradle 2.4、Eclipse 4.5.0 Mars 的注释处理失败

java - IntelliJ IDEA 多次调试进入方法

java - java 网络应用程序中用于身份验证的任何库?

java - Tomcat 没有运行 servlet