package com.uas.demo.api; import org.apache.commons.io.FilenameUtils; import org.apache.log4j.Logger; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.util.UriComponentsBuilder; import java.io.File; import java.io.IOException; import java.net.URI; @RestController @RequestMapping(value = "/api/utils/file") public class FileController { private final Logger logger = Logger.getLogger(getClass()); private RestTemplate restTemplate; public FileController() { this.restTemplate = new RestTemplate(); } @RequestMapping(method = RequestMethod.POST) @ResponseStatus(HttpStatus.CREATED) public ResponseEntity uploadFile(@RequestParam("file") MultipartFile file, UriComponentsBuilder ucb) { String fileUrl = ""; try { File uploadFile = File.createTempFile("tmp", "." + FilenameUtils.getExtension(file.getOriginalFilename())); file.transferTo(uploadFile); FileSystemResource resource = new FileSystemResource(uploadFile); MultiValueMap param = new LinkedMultiValueMap<>(); param.add("file", resource); fileUrl = restTemplate.postForObject("http://10.10.100.23:20070/file/part", param, String.class); uploadFile.deleteOnExit(); } catch (IOException e) { e.printStackTrace(); } HttpHeaders headers = new HttpHeaders(); URI uri = ucb.replacePath(fileUrl) .build() .toUri(); headers.setLocation(uri); logger.info(String.format("Upload file[%s]", fileUrl)); return new ResponseEntity<>(fileUrl, headers, HttpStatus.CREATED); } }