配置文件:
aliyun:
oss:
endpoint: 使用阿里云OSS存储的节点地址
accessKeyId: 自己的密钥ID
accessKeySecret: 密钥
bucketName: 存储的空间名
对应的POJO类
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSPOJO {
private String endpoint; //阿里云oss地址
private String accessKeyId; //阿里云oss的id
private String accessKeySecret; //阿里云oss的密钥
private String bucketName; //oss的存储空间名
}
将文件上传封装为一个工具类
AliOSSUtils
@Component
public class AliOSSUtils {
@Autowired
private AliOSSPOJO aliOSSUtils;
public String upload(MultipartFile file) throws IOException {
//创建OSSClient实例
//填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = aliOSSUtils.getEndpoint();
//填写AccessKey信息
String accessKeyId = aliOSSUtils.getAccessKeyId();
//填写AccessKey密钥
String accessKeySecret = aliOSSUtils.getAccessKeySecret();
//填写Bucket名称
String bucketName = aliOSSUtils.getBucketName();
//获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
//每次上传的文件随机文件名避免覆盖
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到OSS
OSS build = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
build.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//"+bucketName+"."+endpoint.split("//")[1]+"/"+fileName;
build.shutdown();
return url;
}
}
使用
@RestController
public class UploadController {
@Autowired
private AliOSSUtils aliOSSUtils;
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
String upload = aliOSSUtils.upload(image);
return Result.success(upload);
}
}