运行到这个方法getSubmittedFileName();报错'java.lang.String javax.servlet.http.Part.getSubmittedFileName()'
时间: 2023-12-28 21:03:58 浏览: 56
这个错误通常是因为你的Servlet API版本太低导致的。请确保你的Servlet API版本至少为3.1(对应的Tomcat版本为8或更高版本),因为在这个版本中,getSubmittedFileName()方法才被添加到Part接口中。如果你的Servlet API版本低于3.1,可以尝试使用getHeader("content-disposition")方法来获取上传文件的名称。例如,你可以使用以下代码来获取上传文件的名称:
```
Part filePart = request.getPart("file");
String header = filePart.getHeader("content-disposition");
String fileName = header.substring(header.indexOf("filename=\"") + 10, header.lastIndexOf("\""));
```
其中,"file"是你在表单中定义的文件上传字段的名称。
相关问题
'java.lang.String javax.servlet.http.Part.getSubmittedFileName()'
这是一个 Java Servlet API 中的方法,用于获取客户端提交的文件名。在使用 multipart/form-data 类型的表单提交文件时,通过 Part 接口的实现类可以访问上传的文件,而 getSubmittedFileName() 方法可以获取文件名。需要注意的是,如果客户端没有提供文件名,则此方法返回 null。
使用token报错java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
这个错误是因为在Java 9中,javax.xml.bind包已被标记为过时,而在Java 11中,则已被删除。如果您的应用程序在Java 9或更高版本中运行,则需要手动添加javax.xml.bind库,以解决此问题。
您可以通过以下两种方法之一来解决此问题:
1. 使用JAXB API替换javax.xml.bind库。这是一个更现代的解决方案,可以在Java 9及更高版本中运行。您可以使用JAXB API来执行与JAXB库相同的操作。您需要添加以下依赖项:
```
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
```
2. 添加javax.xml.bind库。如果您的应用程序必须在Java 9或更高版本中运行,并且您无法使用JAXB API,则可以手动添加javax.xml.bind库。您可以通过以下方式之一来执行此操作:
- 将javax.xml.bind.jar文件复制到您的应用程序的classpath中。
- 将以下依赖项添加到您的pom.xml文件中:
```
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>
```
这些依赖项将添加javax.xml.bind库到您的应用程序中。