2013-05-21 5 views
0

Я пытаюсь загрузить файл с запросом POST. POST должен состоять из нескольких типов/форм-файлов. Я вставляю файл в виде массива байтов:FormHttpMessageConverter имя файла из байтового массива

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. Он использует: amazon s3. Вот post example >>

ответ

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

, но, возможно, есть еще некоторые решения прекрасные.

Смежные вопросы