OssUtils.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package nju.seec.helper.util.oss;
  2. import com.aliyun.oss.ClientException;
  3. import com.aliyun.oss.OSS;
  4. import com.aliyun.oss.OSSClientBuilder;
  5. import com.aliyun.oss.OSSException;
  6. import com.aliyun.oss.model.PutObjectRequest;
  7. import lombok.Data;
  8. import lombok.extern.slf4j.Slf4j;
  9. import nju.seec.helper.enums.ExceptionType;
  10. import nju.seec.helper.exception.HelperException;
  11. import org.springframework.boot.context.properties.ConfigurationProperties;
  12. import org.springframework.scheduling.annotation.Async;
  13. import org.springframework.stereotype.Component;
  14. import java.io.InputStream;
  15. import java.net.URL;
  16. import java.util.Date;
  17. /**
  18. * use oss
  19. *
  20. * @author cst
  21. */
  22. @Slf4j
  23. @Component
  24. @Data
  25. @ConfigurationProperties("aliyun.oss")
  26. public class OssUtils {
  27. private String endpoint;
  28. private String accessKeyId;
  29. private String accessKeySecret;
  30. private String bucketName;
  31. public void upload(String objectName, InputStream inputStream) {
  32. OSS ossClient = getOss();
  33. PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
  34. try {
  35. ossClient.putObject(putObjectRequest);
  36. } catch (OSSException | ClientException e) {
  37. log.error(e.getMessage());
  38. throw HelperException.of(ExceptionType.ERROR, "文件上传失败");
  39. } finally {
  40. if (ossClient != null) {
  41. ossClient.shutdown();
  42. }
  43. }
  44. }
  45. public String getUrl(String objectName, long seconds) {
  46. OSS ossClient = getOss();
  47. Date expiration = new Date(System.currentTimeMillis() + seconds * 1000);
  48. try {
  49. URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
  50. return url.toString();
  51. } catch (OSSException | ClientException e) {
  52. log.error(e.getMessage());
  53. throw HelperException.of(ExceptionType.ERROR, "获取文件链接失败");
  54. } finally {
  55. if (ossClient != null) {
  56. ossClient.shutdown();
  57. }
  58. }
  59. }
  60. public void copy(String sourceObjectName, String destinationObjectName) {
  61. OSS ossClient = getOss();
  62. try {
  63. ossClient.copyObject(bucketName, sourceObjectName, bucketName, destinationObjectName);
  64. } catch (OSSException | ClientException e) {
  65. log.error(e.getMessage());
  66. throw HelperException.of(ExceptionType.ERROR, "文件复制失败");
  67. } finally {
  68. if (ossClient != null) {
  69. ossClient.shutdown();
  70. }
  71. }
  72. }
  73. @Async
  74. public void delete(String objectName) {
  75. OSS ossClient = getOss();
  76. try {
  77. ossClient.deleteObject(bucketName, objectName);
  78. } catch (OSSException | ClientException e) {
  79. log.error(e.getMessage());
  80. throw HelperException.of(ExceptionType.ERROR, "文件删除失败");
  81. } finally {
  82. if (ossClient != null) {
  83. ossClient.shutdown();
  84. }
  85. }
  86. }
  87. private OSS getOss() {
  88. return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
  89. }
  90. }