Отправка файлов как чанков с использованием Spring 'RestTemplate - PullRequest
0 голосов
/ 27 февраля 2020

Я должен вызвать API POST REST, который принимает файл в своем теле.

Если я отправляю файл размером в несколько килобайт (используя приведенный ниже код), это занимает около 300 мс. И, если я отправляю около 5 ГБ файла, он выдает исключение Out Of Memory.

Есть ли возможность последовательно отправить файл как чанки? В настоящее время мы избегаем какой-либо параллельной обработки.

Любая помощь в коде или справке очень важна.

public static Resource getTestFile() throws IOException {
    Path testFile = Paths.get(FILE_PATH);
    System.out.println("Creating and Uploading Test File: " + testFile);
    return new FileSystemResource(testFile.toFile());
}
private static void uploadSingleFile() throws IOException {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_FORM_DATA);

    MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
    body.add("file", getTestFile());

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

    String serverUrl = "http://localhost:8080/place";

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<DataTransportResponse> response = restTemplate.postForEntity(serverUrl, requestEntity,
                    DataTransportResponse.class);

    System.out.println("Response code: " + response.getStatusCode());
}

spring:
  application:
    name: file-manager
  servlet:
    multipart:
      max-file-size: 20480MB
      max-request-size: 2048MB 
application:
  seal:
    id: 104912

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Я получил разрешение через -

MultiValueMap<String, String> fileMap = new LinkedMultiValueMap<>();
            fileMap.add(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString());
0 голосов
/ 27 февраля 2020

Вы можете попробовать этот способ

@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    multipartResolver.setMaxUploadSize(54525952); //...specify your size of file  (20971520 - 20 MB) (54525952 - 52 MB)
    return multipartResolver;
}

Я нашел эту ссылку по этой ссылке post . надеюсь, что это поможет.

...