文件错误上传 Jersey RestFul 服务

File Wrong Upload Jersey RestFull Service

我真的无法理解这个错误的原因。 我 运行 示例应用程序。它工作正常。相同的代码,但无法正确加载。我认为错误是由于版本差异造成的。有人对解决方案有任何建议吗?

我创建的网络服务

    @POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response getImageText( @FormDataParam("file")InputStream inputStream) { 
        try {
            byte[] bytes =IOUtils.toByteArray(inputStream);             
            inputStream.close();                
            System.out.println(bytes.length);           
             ArrayList<ImageBarcod> temp=null;
            return Response.ok(temp).build();
        } catch (Exception e) {
            return Response
                    .status(Response.Status.NOT_FOUND)
                    .build();               
        }   
}

bytes.length 输出:

要上传的文件大小

sample application

上传文件:

保存文件:

图书馆:

问题是您正在使用 Jersey 2.x,但您的 Multipart 依赖项是针对 Jersey 1.x 的。两个 Jersey 版本不兼容。因此,您使用的 @FormDataParam 注释只是被忽略了。这就是为什么您在 InputStream 中得到的是整个多部分实体,而不仅仅是文件部分。

您需要做的是删除所有 Jersey 1.x 依赖项,然后添加 Jersey 2.x jersey-media-multipart 依赖项。

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>${jersey2.version}</version>
</dependency>

然后您需要在您的应用程序中注册 MultiPartFeature。您可以在 中看到几种不同的方法。完成后,您将能够使用 @FormDataParam 的 2.x 版本(不同于 1.x 版本)。