1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| @Configuration public class AliyunOSSConfig {
@Resource private AliyunOSSProperties aliyunOSSProperties;
@Bean public OSS aliyunOSSClient() { DefaultCredentialProvider credentialsProvider = CredentialsProviderFactory.newDefaultCredentialProvider( aliyunOSSProperties.getAccessKey(), aliyunOSSProperties.getSecretKey());
return new OSSClientBuilder().build(aliyunOSSProperties.getEndpoint(), credentialsProvider); } }```
阿里云策略实现类 ```java @Slf4j public class AliyunOSSFileStrategy implements FileStrategy {
@Resource private AliyunOSSProperties aliyunOSSProperties;
@Resource private OSS ossClient;
@Override @SneakyThrows public String uploadFile(MultipartFile file, String bucketName) { log.info("## 上传文件至阿里云 OSS ...");
if (file == null || file.getSize() == 0) { log.error("==> 上传文件异常:文件大小为空 ..."); throw new RuntimeException("文件大小不能为空"); }
String originalFileName = file.getOriginalFilename();
String key = UUID.randomUUID().toString().replace("-", ""); String suffix = originalFileName.substring(originalFileName.lastIndexOf("."));
String objectName = String.format("%s%s", key, suffix);
log.info("==> 开始上传文件至阿里云 OSS, ObjectName: {}", objectName);
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(file.getInputStream().readAllBytes()));
String url = String.format("https://%s.%s/%s", bucketName, aliyunOSSProperties.getEndpoint(), objectName); log.info("==> 上传文件至阿里云 OSS 成功,访问路径: {}", url); return url; } }
|