【问题标题】:Error in ServletFileUpload#parseRequest(request) with tomcat 10ServletFileUpload#parseRequest(request) 中的错误与 tomcat 10
【发布时间】:2021-07-22 13:42:36
【问题描述】:

开发一个简单的文件上传程序。我必须使用 jakarta.servlet.* 类,因为我使用的是 Tomcat v10。我在 parseRequest(request) 行收到编译时错误。

代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        ServletFileUpload sf = new ServletFileUpload(new DiskFileItemFactory());
        try {
            List<FileItem> multifiles = sf.parseRequest(request);
            
            for(FileItem i : multifiles) {
                i.write(new File("C:/Users/Luffy/Documents/FileUploadDemo/"+i.getName()));
            }
            response.getWriter().print("The file is uploaded");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        response.getWriter().print("The file is uploaded");
    }

错误如下:

ServletFileUpload 类型中的方法 parseRequest(javax.servlet.http.HttpServletRequest) 不适用于参数 (jakarta.servlet.http.HttpServletRequest)

我在谷歌上搜索了很多,但找不到解决方案。

请提出解决方法或可能的解决方案。提前致谢。

这是我在堆栈溢出中的第一篇文章。如果有任何错误,请忽略我的错误:)

【问题讨论】:

    标签: servlets jakarta-ee multifile-uploader tomcat10 parse-request


    【解决方案1】:

    您正在尝试使用来自commons-fileuploadServletFileUpload 类,它不适用于jakarta.servlet.http.HttpServletRequest。该库必须适应 Servlet 5.0 类。

    幸运的是,由于 Servlet 3.0 (Tomcat 8.0) multipart/form-data 请求可以被 servlet 解析。你只需要:

    try {
        final Collection<Part> parts = request.getParts();
        for (final Part part : parts) {
           part.write("C:/Users/Luffy/Documents/FileUploadDemo/"+part.getSubmittedFileName());
        }
        response.getWriter().print("The file has been uploaded successfully.");
    } catch (Exception e) {
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Upload failed.");
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 2014-07-20
      • 2012-10-14
      • 2011-01-10
      • 2020-10-13
      • 1970-01-01
      • 2021-06-11
      • 2019-07-12
      • 2021-09-02
      相关资源
      最近更新 更多