MinIOUtils.java 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.kmall.common.fileserver.minio;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.kmall.common.utils.SpringContextUtils;
  4. import org.apache.commons.lang3.StringUtils;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.core.env.Environment;
  8. import org.springframework.core.io.ByteArrayResource;
  9. import org.springframework.core.io.Resource;
  10. import org.springframework.http.HttpEntity;
  11. import org.springframework.http.HttpHeaders;
  12. import org.springframework.http.MediaType;
  13. import org.springframework.http.ResponseEntity;
  14. import org.springframework.util.LinkedMultiValueMap;
  15. import org.springframework.util.MultiValueMap;
  16. import org.springframework.web.client.RestTemplate;
  17. import org.springframework.web.multipart.MultipartFile;
  18. import java.io.IOException;
  19. public class MinIOUtils {
  20. private static volatile String host = null;
  21. private static volatile String baseApi = null;
  22. private static volatile boolean inited = false;
  23. private static final Logger log = LoggerFactory.getLogger(MinIOUtils.class);
  24. private static final RestTemplate restTemplate = new RestTemplate();
  25. private static String buildUrl(String uri) {
  26. return getBaseUrl() + uri;
  27. }
  28. private static String getBaseUrl() {
  29. if (!inited) {
  30. synchronized (MinIOUtils.class) {
  31. if (!inited) {
  32. Environment env = SpringContextUtils.getBean(Environment.class);
  33. try {
  34. String profiles = env.getActiveProfiles()[0];
  35. if ("dev".equals(profiles)) {
  36. host = "http://127.0.0.1:9393";
  37. baseApi = "/dev-api";
  38. } else if ("test".equals(profiles)) {
  39. host = "http://3f352e8584.qicp.vip:9393";
  40. baseApi = "/test-api";
  41. } else if ("prod".equals(profiles)) {
  42. host = "http://3f352e8584.qicp.vip:9393";
  43. baseApi = "/prod-api";
  44. } else {
  45. host = "http://3f352e8584.qicp.vip:9393";
  46. baseApi = "/prod-api";
  47. }
  48. } catch (Exception e) {
  49. host = "http://3f352e8584.qicp.vip:9393";
  50. baseApi = "/prod-api";
  51. }
  52. inited = true;
  53. }
  54. }
  55. }
  56. return host + baseApi;
  57. }
  58. public static FileInfo upload(MultipartFile file) throws IOException {
  59. String url = buildUrl(EOSSProperties.uploadUri);
  60. MediaType mediaType = MediaType.MULTIPART_FORM_DATA;
  61. HttpHeaders headers = new HttpHeaders();
  62. headers.setContentType(mediaType);
  63. MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
  64. Resource resource = new ByteArrayResource(file.getBytes(), file.getName()) {
  65. @Override
  66. public String getFilename() {
  67. return file.getOriginalFilename();
  68. }
  69. };
  70. body.set("file", resource);
  71. HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(body, headers);
  72. ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(url, httpEntity, String.class);
  73. String responseBody = stringResponseEntity.getBody();
  74. JSONObject result = JSONObject.parseObject(responseBody);
  75. log.info("upload file result {}", result);
  76. JSONObject dataJsonObject = result.getJSONObject("data");
  77. FileInfo data = dataJsonObject.getJSONArray("rows").getObject(0, FileInfo.class);
  78. return data;
  79. }
  80. }