我是webservice的新手。我使用spring mvc和webservice将文件上传到服务器。在spring控制器中,我尝试在多值映射中添加参数,如下面的
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("caption", "Test Caption");
formData.add("file",new FileSystemResource("/home/mytxt");
formData.add("jsonData",imageJson);
我的httpheader和httpentity看起来像下面那个
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
final HttpEntity<MultiValueMap<String,Object>> requestEntity = new HttpEntity<>(
formData, requestHeaders);
在服务方面,我的方法看起来像
@Path("/addImage")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response copyFromLocal(
@FormDataParam("file") InputStream uploadedInputStream ) throws IOException
{
return null;
}
到目前为止一切都很好,但是当我使用下面的方法时,不会调用该方法
@POST
@Path("/addImage")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response copyFromLocal(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition content)
throws IOException
{
}
客户端代码
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("caption", "Test Caption");
formData.add("file",new FileSystemResource("/home/txt"));
formData.add("jsonData",imageJson);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
final HttpEntity<MultiValueMap<String,Object>> requestEntity = new HttpEntity<>(
formData, requestHeaders);
responseFromService = this.baseAdapter.makeRequest(HttpMethod.POST,
requestEntity, relativeURL, String.class,true);
BaseAdapter类使用Spring RestTemplate发布url。
我希望将控制器中地图中存在的所有参数传递给服务端的方法。任何人都可以帮我解决问题吗?任何帮助表示赞赏。
答案 0 :(得分:0)
我看到你在两个不同的参数上指定了两个@FormDataParam("file")
注释,我认为它应该只应用于一个。
@POST
@Path("/addImage")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response copyFromLocal(
InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition content)
throws IOException {
}