FileController.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.uas.demo.api;
  2. import org.apache.commons.io.FilenameUtils;
  3. import org.apache.log4j.Logger;
  4. import org.springframework.core.io.FileSystemResource;
  5. import org.springframework.http.HttpHeaders;
  6. import org.springframework.http.HttpStatus;
  7. import org.springframework.http.ResponseEntity;
  8. import org.springframework.util.LinkedMultiValueMap;
  9. import org.springframework.util.MultiValueMap;
  10. import org.springframework.web.bind.annotation.*;
  11. import org.springframework.web.client.RestTemplate;
  12. import org.springframework.web.multipart.MultipartFile;
  13. import org.springframework.web.util.UriComponentsBuilder;
  14. import java.io.File;
  15. import java.io.IOException;
  16. import java.net.URI;
  17. @RestController
  18. @RequestMapping(value = "/api/utils/file")
  19. public class FileController {
  20. private final Logger logger = Logger.getLogger(getClass());
  21. private RestTemplate restTemplate;
  22. public FileController() {
  23. this.restTemplate = new RestTemplate();
  24. }
  25. @RequestMapping(method = RequestMethod.POST)
  26. @ResponseStatus(HttpStatus.CREATED)
  27. public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file, UriComponentsBuilder ucb) {
  28. String fileUrl = "";
  29. try {
  30. File uploadFile = File.createTempFile("tmp", "." + FilenameUtils.getExtension(file.getOriginalFilename()));
  31. file.transferTo(uploadFile);
  32. FileSystemResource resource = new FileSystemResource(uploadFile);
  33. MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
  34. param.add("file", resource);
  35. fileUrl = restTemplate.postForObject("http://10.10.100.23:20070/file/part", param, String.class);
  36. uploadFile.deleteOnExit();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. HttpHeaders headers = new HttpHeaders();
  41. URI uri = ucb.replacePath(fileUrl)
  42. .build()
  43. .toUri();
  44. headers.setLocation(uri);
  45. logger.info(String.format("Upload file[%s]", fileUrl));
  46. return new ResponseEntity<>(fileUrl, headers, HttpStatus.CREATED);
  47. }
  48. }