我正在尝试使用POST请求上传文件。 POST必须是enclosure-type multipart / form-data。我将文件作为字节数组插入:
MultiValueMap<String, Object> requestParameters = new LinkedMultiValueMap<String, Object>();
byte[] image=getImage();
// ... adding parameters in requestParameters
// TODO filename
requestParameters .add("file", image);
然后我发帖子请求 org.springframework.http.converter.FormHttpMessageConverter:
FormHttpMessageConverter multipartFormConverter = new FormHttpMessageConverter();
multipartFormTemplate = new RestTemplate();
multipartFormTemplate.setMessageConverters(Collections.<HttpMessageConverter<?>> singletonList(multipartFormConverter));
ResponseEntity<String> uploadAnswer=multipartFormTemplate.postForEntity(freePlanResponse.getUrl(), requestParameters, String.class);
问题是 - 我无法找到,如何更改文件名。结果始终是文件托管的默认文件名( $ {filename} ),我正在使用: image hosting。它用: 亚马逊s3。这是post example >>
答案 0 :(得分:0)
我找到了解决方案:
继承FormHttpMessageConverter并覆盖getFileName方法:
public class FormHttpMessageConverterImageName extends FormHttpMessageConverter {
private String filename;
public void setFilename(String filename){
this.filename=filename;
}
@Override
protected String getFilename(Object part) {
return filename;
}
}
但也许有更美妙的解决方案。