【问题标题】:The method getSubmittedFileName() is undefined for the type Part方法 getSubmittedFileName() 未为 Part 类型定义
【发布时间】:2017-04-23 15:52:06
【问题描述】:

我正在尝试在 servlet 3.0 中上传多个文件>。我在 getSubmittedFileName() 方法中遇到错误。为什么会出现此错误?

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    String description = request.getParameter("description"); // Retrieves
                                                                // <input
                                                                // type="text"
                                                                // name="description">
    Part filePart = request.getPart("file"); // Retrieves <input type="file"
                                                // name="file">
    String fileName = Paths.get(filePart.getSubmittedFileName())
            .getFileName().toString(); // MSIE fix.
    InputStream fileContent = filePart.getInputStream();
    // ... (do your job here)
}

【问题讨论】:

  • 我终于找到了解决方案,改变你的 tomcat 服务器 版本就可以解决这个问题

标签: java file-upload servlet-3.0


【解决方案1】:

我之前遇到过这个问题。 有人帮我找到了这个问题的根源,所以这是我得到的解决方案:

在 Java EE 7 的 DOC 中,您可以看到从 Servlet 3.1 开始添加了“接口部分”getSubmittedFileName 方法,并且从 tomcat 网站您可以看到 Tomcat 7 实现了 Servlet 3.0,所以我需要从Tomcat 7 到 Tomcat 8.0.x。

参考资料:

【讨论】:

  • 我有 tomcat 8 并使用 java 8
  • 您是否更改了项目“目标运行时”:drive.google.com/open?id=0B2GmsAlF3bu_dTRDc19iTHlVYWc
  • 嗯,好的,当您再次遇到问题时,我们可以再次开始对其进行故障排除。 Tomcat 8 不使用 servlet 3.1。
  • 这些天我在一家公司担任 android 开发人员。所以我对 android android android 很感兴趣
【解决方案2】:

如果您使用的是 Servlet 3.0,则必须手动定义 getSubmittedFileName()

this answer 中向下滚动到“当您还没有使用 Servlet 3.1 时,手动获取提交的文件名”用于方法定义并根据您的需要进行更改。

【讨论】:

    【解决方案3】:

    如果像我这样的人来到这里,getSubmittedFileName() null

    for (Part filePart : request.getParts())循环

    那么就知道不是每个Part 都有FileName 属性:)

    【讨论】:

      【解决方案4】:

      我已经解决了这个问题, 只需在 maven pom.xml 文件中应用这种依赖关系...

           <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
           <dependency>
               <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
             </dependency>
      

      【讨论】:

        猜你喜欢
        • 2022-11-03
        • 1970-01-01
        • 1970-01-01
        • 2022-12-23
        • 2021-08-02
        • 2017-12-21
        • 2013-12-16
        • 2016-10-14
        • 1970-01-01
        相关资源
        最近更新 更多