OssService.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.ygj.yuemum.utils;
  2. import com.aliyun.oss.OSS;
  3. import com.aliyun.oss.OSSClient;
  4. import com.aliyun.oss.common.auth.DefaultCredentialProvider;
  5. import com.aliyun.oss.model.ObjectMetadata;
  6. import lombok.Data;
  7. import lombok.experimental.Accessors;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.web.multipart.MultipartFile;
  10. import java.io.File;
  11. import java.io.FileInputStream;
  12. import java.io.InputStream;
  13. import java.io.UnsupportedEncodingException;
  14. import java.net.URLEncoder;
  15. import java.util.UUID;
  16. @Service
  17. public class OssService {
  18. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  19. String accessKeyId = "02yUhyzfxsxzLCKA";
  20. String accessKeySecret = "6Cw3uKQKKRedocMtfZVfCxHoeZh2h6";
  21. String bucket = "yueguanjia-bucket";
  22. String rootserver = "oss-cn-hangzhou.aliyuncs.com";
  23. public UploadDto upload(File file, String folder) throws Exception {
  24. OSS ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), null);
  25. ObjectMetadata objectMetadata = new ObjectMetadata();
  26. objectMetadata.setContentLength(file.length());
  27. FileInputStream inputStream = new FileInputStream(file);
  28. String extension = getExtension(file.getName());
  29. String saveName = UUID.randomUUID().toString() + "." + extension;
  30. String key = folder + "/" + saveName;
  31. ossClient.putObject(bucket, key, inputStream, objectMetadata);
  32. ossClient.shutdown();
  33. UploadDto uploadDto = new UploadDto();
  34. uploadDto.url = getUrl(key);
  35. uploadDto.name = file.getName();
  36. uploadDto.saveName = saveName;
  37. uploadDto.size = file.length();
  38. uploadDto.key = key;
  39. return uploadDto;
  40. }
  41. public UploadDto upload(MultipartFile file, String folder) throws Exception {
  42. OSS ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), null);
  43. ObjectMetadata objectMetadata = new ObjectMetadata();
  44. objectMetadata.setContentLength(file.getSize());
  45. String extension = getExtension(file.getOriginalFilename());
  46. String saveName = UUID.randomUUID().toString() + "." + extension;
  47. String key = folder + "/" + saveName;
  48. ossClient.putObject(bucket, key, file.getInputStream(), objectMetadata);
  49. ossClient.shutdown();
  50. UploadDto uploadDto = new UploadDto();
  51. uploadDto.url = getUrl(key);
  52. uploadDto.name = file.getOriginalFilename();
  53. uploadDto.saveName = saveName;
  54. uploadDto.size = file.getSize();
  55. uploadDto.key = key;
  56. return uploadDto;
  57. }
  58. public UploadDto upload(InputStream inputStream, String folder, String fileName, long lenth) throws UnsupportedEncodingException {
  59. OSS ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), null);
  60. String extension = getExtension(fileName);
  61. String saveName = UUID.randomUUID().toString() + "." + extension;
  62. String key = folder + "/" + saveName;
  63. ossClient.putObject(bucket, key, inputStream);
  64. ossClient.shutdown();
  65. UploadDto uploadDto = new UploadDto();
  66. uploadDto.url = getUrl(key);
  67. uploadDto.name = fileName;
  68. uploadDto.saveName = saveName;
  69. uploadDto.size = lenth;
  70. uploadDto.key = key;
  71. return uploadDto;
  72. }
  73. private String getExtension(String fileName) {
  74. int index = fileName.lastIndexOf(".");
  75. if (index < 0) {
  76. return "";
  77. }
  78. return fileName.substring(index + 1);
  79. }
  80. public String getUrl(String key) throws UnsupportedEncodingException {
  81. return "https://" + bucket + "." + rootserver + "/" + URLEncoder.encode(key, "UTF-8");
  82. }
  83. @Data
  84. @Accessors(chain = true)
  85. public static class UploadDto {
  86. /**
  87. * oss存储地址
  88. */
  89. private String url;
  90. /**
  91. * osskey
  92. */
  93. private String key;
  94. private String name;
  95. /**
  96. * 保存oss文件名称
  97. */
  98. private String saveName;
  99. /**
  100. * 文件大小
  101. */
  102. private Long size;
  103. }
  104. }