Можем ли мы установить пользовательскую границу для загрузки нескольких файлов в шаблоне Spring Rest? - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу создать пользовательскую границу для отправки некоторых json данных и файла с использованием шаблона Spring Rest. Я не могу добавить эту пользовательскую границу. Я не могу переопределить поведение по умолчанию для получения некоторой случайной строки для значения границы. Ниже приведен мой фрагмент кода. Кто-нибудь может подсказать, как получить пользовательскую границу?

 HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_MIXED);
    headers.set("boundary", "MyCustomboundary");
    headers.set("accepts", "multipart/mixed");


    MultiValueMap<String, Object> multipartRequest = new LinkedMultiValueMap<>();

'создание HttpEntity для JSON части'

    HttpHeaders jsonHeader = new HttpHeaders();
    jsonHeader.setContentType(MediaType.APPLICATION_JSON);
    jsonHeader.set( "Content-Disposition","form-data");
    jsonHeader.set("boundary", "MyCustomboundary");
    jsonHeader.set( "name","Metadata");

    ContentDisposition contentDisposition = ContentDisposition
            .builder("form-data")
            .name("file")
            .filename("FileName"))
            .build();

    JSONObject json = getJSONObject();
    HttpEntity<String> jsonHttpEntity = new HttpEntity<>(json.toString(), jsonHeader);

'создание HttpEntity для двоичной части'

    HttpHeaders pictureHeader = new HttpHeaders();
    pictureHeader.set( "Content-Disposition","form-data");
    pictureHeader.set( "name","Content");
    pictureHeader.set("filename","FileNameTest");
    pictureHeader.set("Content-Type", "application/octet-stream");
    pictureHeader.set("boundary", "MyCustomboundary");

    HttpEntity<ByteArrayResource> picturePart = new HttpEntity<>(new ByteArrayResource(multipartFile.getBytes()), pictureHeader);

', помещая две части в одном запросе '

    multipartRequest.add("myAwesomeJsonData", jsonHttpEntity);
    multipartRequest.add("file", picturePart);

    HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(multipartRequest, headers);


    ResponseEntity<String> response = restTemplate.exchange(
                                                    endPointURL,
                                                    HttpMethod.POST,
                                                    requestEntity,
                                                    String.class);

** OutPut выглядит следующим образом **

- xASRP9GvA7MfYQqgq0eVyQ2s1HCwMxm

Content-Disposition: form-data Content-Type: application Граница / json: MyCustomboundary name: длина метаданных: 359

{"JSON Key": "Value"} --xASRP9GvA7MfYQqgq0eVyQ2s1HCwMxm

Content-Disposition: имя формы-данных: Content имя файла: output.pdf Тип содержимого: граница потока приложения / октета: Длина содержимого MyCustomboundary: 4504

<- Содержимое файла ->

- xASRP9GvA7MfYQqgq0eVyQ2s1HCwMxm -

** Но я хочу, чтобы это было **

- MyCustomboundary

Content-Disposition: форма-данные Content-Type: application / json border: MyCustomboundary name: Metadata Content- Длина: 359

{"JSON Ключ": "Значение"} --MyCustomboundary

* 10 34 * Content-Disposition: имя-формы-данных: Имя файла содержимого: output.pdf Тип содержимого: граница приложения / потока октетов: Длина содержимого MyCustomboundary: 4504

<- Содержимое файла ->

- MyCustomboundary -

'Кто-нибудь может подсказать, как добавить эту пользовательскую границу?'

...