【发布时间】:2015-12-02 06:41:32
【问题描述】:
我遇到了 jersey 2 文件上传问题。输入流到服务器端为空。使用 jersey 2.21、jackson 2.5.4、spring 4.1.6.RELEASE(仅用于 DI)和 spring security 4.0.2.RELEASE 来保证安全。使用 JDK 1.8.0_25 和 Tomcat 8.0.26。
代码:
@POST
@Path("/upload")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public SimpleResult categoryImageUpload(
@FormDataParam("file") InputStream file,
@FormDataParam("file") FormDataBodyPart bodyPart) {
return SimpleResult.success("File Uploaded successfully!!!");
}
FormDataBodyPart 中有文件详细信息,但 InputStream 为空(available=0)。
球衣配置:
@ApplicationPath("api-business")
public class BusinessApplicationConfig extends ResourceConfig {
public BusinessApplicationConfig() {
register(RequestContextFilter.class);
register(MultiPartFeature.class);
packages("com.smx.biz.api");
}
}
pom.xml 中的依赖项:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.4</version>
</dependency>
<!--Jersey-->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.21</version>
</dependency>
<!-- Jersey + Spring -->
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.21</version>
</dependency>
有人可以帮忙解决这个问题吗?我错过了什么吗???
PS:Spring REST 文件上传代码运行良好,InputStream 即将到来。但是泽西代码不起作用。使用相同的客户端代码测试 api。
工作 Spring REST api 代码:
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/business/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
ImageItem categoryPhotoUpload(@RequestBody MultipartFile file) {
return uploadService.uploadFile(file);
}
我想将 Jersey 用于 api 而我不想使用 Spring REST。
有人可以帮忙解决这个问题吗?
【问题讨论】:
标签: java spring jersey jackson tomcat8