您好我正在尝试构建一个REST服务,这是我的休息方法
@POST
@Path("/updateDocument/{id}")
@Consumes("multipart/form-data")
public Response updateDocument(@FormDataParam("doc") InputStream documentStream,@FormDataParam("doc") FormDataContentDisposition header, @FormDataParam("xmlData") String xmlMetaData,@PathParam("id") String docId) {
logger.info("Inside DocumentEndpointImpl::updateDocument");
logger.info("XML Recived"+xmlMetaData);
logger.info("DOCID:"+docId);
Response response=null;
try {
if(documentStream==null)
{
logger.info("Document stream is null");
}
else
{
byte[] documentBytes=IOUtils.toByteArray(documentStream);
this.documentTrigger.updateDocument(documentBytes, xmlMetaData, docId);
writeImage(documentBytes);
}
} catch (IOException e) {
logger.error(e.getMessage(),e);
}
finally
{
if(documentStream!=null){
try {
documentStream.close();
} catch (IOException e) {
logger.error(e.getMessage(),e);
}
}
}
return response;
}
我正在尝试上传一个文件以及一个以上的XML数据。 为此我使用Form-data,因此content-type是multipart \ form-data
Below is my POST request as extracted from POSTMAN
POST /rs/document/updateDocument/1 HTTP/1.1
Host: localhost:7000
Cache-Control: no-cache
Postman-Token: efaf61b8-1eb5-9657-17f5-ca877c3100a9
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="doc"; filename=""
Content-Type:
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="xmlData"
a
----WebKitFormBoundary7MA4YWxkTrZu0gW
但我得到的数据内容(这是文件)到xmlMetaData,在documentStream中有0个字节来了(我把它转换成字节数组后找到了它)
在做了随机测试后,我发现无论我在post请求中给出的值(在上面的案例文件中)都插入到xmlMetaData中,而且没有任何内容出现在documentStream中。