通过消耗的RESTful CXF多部分/格式数据(Consuming a multipart/for

2019-07-21 03:32发布

我一直在消耗,并与杰克逊一起选择使用Apache CXF产生JSON文件web服务一直在努力。
但是,该服务的方法之一,应该能够从移动应用程序,使一个多部分/格式数据POST请求我的web保存上传的图像,我不知道如何内看待这种内容类型的我上下文。 我们通常创建“请求”和“响应”对象以消费和生产的JSON,不过,这恐怕不会为这种情况下工作。

这是请求格式如下:

Content-type: multipart/form-data
"Description": text/plain
"Path": text/plain
"Image": image/jpeg

如何正确食用这种要求并保存图像的服务器端?


[编辑]

我设法通过使用该消耗的multipart / form-data的:

public returnType savePicture(
                @Multipart(value = "mode", type = "text/plain") String mode,
                @Multipart(value = "type", type = "text/plain") String type,
                @Multipart(value = "path", type = "text/plain") String path
                @Multipart(value = "image", type = "image/jpeg") Attachment image
            ) 
    {

然而,试图消耗以下POST请求时:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="mode"

T
--AaB03x
content-disposition: form-data; name="type"

M
--AaB03x
content-disposition: form-data; name="path"

c:/img/
--AaB03x
content-disposition: form-data; name="image"; filename="image.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

imgdata
--AaB03x--

我收到以下错误:

javax.ws.rs.BadRequestException:org.apache.cxf.jaxrs.utils.multipart.MultipartReadException:没有多部分与内容ID 类型中找到,请求内容类型:多部分/格式数据;边界= AaB03x

当我只消费模式 ,例如,它工作正常。 它只是打破了2个或多个参数。 任何想法为什么是错的?

Answer 1:

我面临着类似的问题,有时回来。

下面的代码做了把戏对我来说

@POST
@Consumes("multipart/form-data")
public void yourMethod(<params>) throws Exception {
}

总之,这是我认为@Consumes你缺少注解。



Answer 2:

看来,我们发现了这个问题,它是有关请求的格式。 正确的格式应该是:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="mode"

T--AaB03x

content-disposition: form-data; name="type"

M--AaB03x

content-disposition: form-data; name="path"

c:/img/--AaB03x

content-disposition: form-data; name="image"; filename="image.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

imgdata--AaB03x--

要改变这种格式让我消耗等参数。



Answer 3:

用于消耗多部分形式的数据。 使用@Consumes标签&提供连同值参数,如“多部分/格式数据”

@Consumes(值=“多部分/格式数据”)

参考https://jnorthr.wordpress.com/2012/07/10/http-header-content-type-and-encodings/



文章来源: Consuming a multipart/form-data via RESTful CXF