0

我正在尝试使用 POST 请求上传文件。POST 必须是机箱类型的 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 发出 post 请求:

FormHttpMessageConverter multipartFormConverter = new FormHttpMessageConverter();
        multipartFormTemplate = new RestTemplate();
        multipartFormTemplate.setMessageConverters(Collections.<HttpMessageConverter<?>> singletonList(multipartFormConverter));

        ResponseEntity<String> uploadAnswer=multipartFormTemplate.postForEntity(freePlanResponse.getUrl(), requestParameters, String.class);

问题是 - 我找不到,如何更改文件名。结果始终是文件托管的默认文件名(${filename}),我正在使用: 图像托管。它使用:亚马逊s3。这是帖子示例>>

4

1 回答 1

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

但也许有一些更漂亮的解决方案。

于 2013-05-21T10:46:32.763 回答