我正在尝试将 Rest 添加到我的后端以上传文件。我在服务器上使用这段代码:
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
@POST
@Path("/upload_thesis")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@DefaultValue("true") @FormDataParam("enabled") boolean enabled,
@FormDataParam("file") InputStream file,
@FormDataParam("file") FormDataContentDisposition fileDisposition
在我将我的程序打包为 jar 文件并将其放在 apache tomcat
服务器上之后,我在服务器上看到了这个错误:
java.lang.RuntimeException: Wrong or absent annotation at parameter with index 1 at class
我在我的依赖项上使用这个版本的 Jersey :
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.29</version>
</dependency>
编辑:
我想我有一个依赖问题,我很困惑我必须使用哪个:
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
或
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.FormDataParam;
最佳答案
这取决于您使用的 Jersey 版本:
- 对于 Jersey 1.x,使用来自
com.sun.jersey
的类型。 - 对于 Jersey 2.x,使用来自
org.glassfish.jersey
的类型。
当涉及到依赖项时,为 Jersey 1.x 选择以下内容:
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
以及 Jersey 2.x 的以下依赖项:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
关于java - 无法使用 JAX-RS 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789783/