找不到FormDataMultiPart的邮件正文阅读器

时间:2016-08-08 23:51:49

标签: java rest multipart

我在使用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) {}

2 个答案:

答案 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服务器之后,它已经工作了: - )