我一直在使用与 jackson 结合使用Apache CXF来消费和产生JSON文件的Web服务。但是,服务的方法之一应该能够保存从移动应用程序上传的图像,该图像向我的Web服务发出多部分/表单数据POST请求,而且我不知道如何在我的内部处理这种内容类型语境。我们通常创建“Request”和“Response”对象来使用和产生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--

我收到以下错误:



例如,当我仅使用模式时,它可以正常工作。它仅中断2个或更多参数。知道为什么会出错吗?

最佳答案

有时我也遇到过类似的问题。

以下代码对我有用

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

简而言之,我认为您缺少@Consumes注释。

关于java - 通过RESTful CXF消耗多部分/表单数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15271573/

10-10 04:24