Невозможно загрузить файл с сервера на другой - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь загрузить файл с моего сервера на другой сервер. При этом я получаю эту ошибку: Resolved [org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present]

Я вложил в файл ключ 'file'. Я не могу понять, почему это происходит.

Сервер загрузки:

                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.MULTIPART_FORM_DATA);
                MultiValueMap<String, Object> body
                        = new LinkedMultiValueMap<>();
                body.add("file", Paths.get("pathToFile").toFile());
                HttpEntity<MultiValueMap<String, Object>> requestEntity
                        = new HttpEntity<>(body, headers);

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

Сервер, на который мы загружаем:

@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = MediaType.ALL_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<ResponseDTO> solveUsingJar(@RequestParam("file") MultipartFile file) {
}

1 Ответ

0 голосов
/ 05 апреля 2020

Я разделяю некоторый код для загрузки файла одним сервером на другой сервер.

ШАГ-1: загрузка файла на сервер-1:

@PostMapping("/upload/profile")
public UploadFileResponse uploadProfileImg(@RequestPart("file") MultipartFile file)
{       
    return fileService.uploadProfileImg(file);
}

ШАГ-2: Загрузить этот файл на сервер-2 с помощью RestTemplate.

public String upload(MultipartFile file) throws IOException 
{
    ResponseEntity<UploadFileResponse> response = null;

    try
    {
        File convFile = new File(file.getOriginalFilename());           

        convFile.createNewFile();       

        FileOutputStream fos = new FileOutputStream(convFile);          
        fos.write(file.getBytes());
        fos.close();

        LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();

        String uploadURI = KeyConstant.FILE_UPLOAD_API_URI+"/file";     // Server-2(file Directory) FILE_UPLOAD_API_URI : http://27.34.2.33:28181/upload/file

        map.add("file",  new FileSystemResource(convFile));

        HttpHeaders headers = new HttpHeaders();

        headers.setContentType(MediaType.MULTIPART_FORM_DATA);

        HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(map, headers);

        RestTemplate restTemplate = new RestTemplate();

        response = restTemplate.exchange(uploadURI, HttpMethod.POST, requestEntity, UploadFileResponse.class);      
    }
    catch(Exception e) {e.printStackTrace();}

    return response.getBody();
}

ШАГ-3: Контроллер отдыха для загрузки файлов на сервер-2:

@PostMapping("/upload/file")
public UploadFileResponse uploadFileByDirectory(@RequestPart(value = "file") MultipartFile file)
{
    return this.amazonClient.uploadFilebyDirectory(KeyConstant.AMAZON_S3_PATH, file);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...