1、添加依赖
2、添加配置
@Configuration
public class AliyunOSSConfig {
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.access-key}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Bean
@ConditionalOnProperty(name = "aliyun.oss.access-key", matchIfMissing = true)
public OSS ossClient() {
return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
}
}
3、实现示例
@Service
@Slf4j
public class FileServiceImpl implements FileService {
@Value("${aliyun.oss.bucketName}")
private String bucketName;
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Autowired
private OSS ossClient;
@Autowired
private UserMapper userMapper;
@Override
public String uploadUserHeadImg(MultipartFile file) {
String originalFilename = file.getOriginalFilename();
// 构建路径
String fileName = Objects.requireNonNull(originalFilename).substring(0, originalFilename.lastIndexOf("."));
String extension = Objects.requireNonNull(originalFilename).substring(originalFilename.lastIndexOf("."));
// 在oss上创建文件夹路径
String newFileName = "head_img/" + fileName + extension;
try {
PutObjectResult result = ossClient.putObject(bucketName, newFileName, file.getInputStream());
// 返回访问路径
if (null != result) {
String headImg = "https://" + bucketName + "." + endpoint + "/" + newFileName;
userMapper.updateHeadImg(headImg);
return headImg;
}
} catch (Exception e) {
log.error("上传头像失败:{}", e);
} finally {
// 关闭OSS服务
ossClient.shutdown();
}
return null;
}
}