文件错误上传 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 输出:
要上传的文件大小
上传文件:
保存文件:
图书馆:
问题是您正在使用 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 版本)。
我真的无法理解这个错误的原因。 我 运行 示例应用程序。它工作正常。相同的代码,但无法正确加载。我认为错误是由于版本差异造成的。有人对解决方案有任何建议吗?
我创建的网络服务
@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 输出:
要上传的文件大小
上传文件:
保存文件:
图书馆:
问题是您正在使用 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 版本)。