我在使用FormDataMultiPart时遇到了一些麻烦。
出于某种原因,看起来好像没有调用MultiPartFeature的配置,即使我把它放在我的web.xml中,下面是我的代码。
web.xml
list1 = [228, 240, 254, 301, 391]
list2 = [212, 345, 395]
list3 = [15, 84, 93, 103, 216, 398, 407, 488]
print(smallest_range(list1, list2, list3))
我的休息方法
<servlet>
<servlet-name>REST</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
和日志消息
@POST
@Path("/users/{userId}/images")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadImage(@HeaderParam("securityToken") String securityToken, @PathParam("userId") Integer userId,
FormDataMultiPart form) {}
答案 0 :(得分:1)
使用Jersey 2.x和Servlet 3.x容器,您不需要web.xml
部署描述符。有关详细信息,请查看Jersey documentation about deployment。
您可以使用@FormDataParam
注释将multipart/form-data
请求实体主体的命名正文部分绑定到资源方法参数,如下所示:
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(@FormDataParam("file") InputStream inputStream,
@FormDataParam("file") FormDataContentDisposition fileMetaData) {
...
}
要使用多部分功能,您需要将jersey-media-multipart
模块添加到pom.xml
文件中:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.23.1</version>
</dependency>
如果您不使用Maven,请确保在类路径上具有所有必需的依赖项(请参阅jersey-media-multipart
)。并且不要忘记在MultiPartFeature
/ Application
子类中注册ResourceConfig
。
有关详细信息,请查看泽西岛documentation about multipart requests。
答案 1 :(得分:1)
我让这个工作。就我而言,我使用的是Jersey服务器1.19和jersey multipart 1.19罐子。即便如此,它也犯了同样的错误。
添加mimepull1.9.3服务器之后,它已经工作了: - )