来自字节数组的FormHttpMessageConverter文件名

时间:2013-05-21 09:45:29

标签: java spring post multipartform-data

我正在尝试使用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 >>

1 个答案:

答案 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;
    }
}

但也许有更美妙的解决方案。