【发布时间】:2024-01-17 13:21:01
【问题描述】:
我对网络服务很陌生。我正在使用 spring mvc 和 webservice 将文件上传到服务器。在弹簧控制器中,我尝试在多值映射中添加参数,如下所示
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。
我想将控制器中映射中存在的所有参数传递给服务端的方法。任何人都可以帮助我解决这个问题吗?任何帮助表示赞赏。
【问题讨论】:
标签: web-services spring-mvc jax-rs multipartform-data media-type