大家好 , 我是苏麟 , 今天聊聊OSS .
这里使用阿里云的OSS对象存储.
首先大家得有一个阿里云账号 , 注册大家都会 这里不多介绍 .
阿里云官网 : 阿里云登录页 (aliyun.com)
首页产品目录下存储集合里对象存储OSS
进入对象存储OSS页面
点击管理控制台(新用户应该有免费试用期的)
进入Bucket列表点击创建Bucket填写信息(主要填写名称其他基本不用改)
endpoint 是网址在地域和存储之间
点击图像下的AccessKey管理
AccessKey ID就是 accesskey , accessKeysecret 点击查看secret 获取
在IDEA中使用
spring:
servlet:
multipart:
#配置单个上传文件的最大值 multiPartFile
max-file-size: 10MB
#配置总上传文件的最大值 multiPartFile
max-request-size: 100MB
#阿里云OSS配置
aliyun:
oss:
endpoint: https://oss-cn-hangzhou.aliyuncs.com
accessKeyId:
accessKeySecret:
bucketName:
/**
* ConfigurationProperties 自动注入
*/
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
/**
* 阿里云 OSS 工具类
*/
@Component
public class AliOSSUtils {
// @Value("${aliyun.oss.endpoint}")
// private String endpoint;
//
// @Value("${aliyun.oss.accessKeyId}")
// private String accessKeyId;
//
// @Value("${aliyun.oss.accessKeySecret}")
// private String accessKeySecret;
//
// @Value("${aliyun.oss.bucketName}")
// private String bucketName;
@Autowired
private AliOSSProperties aliOSSProperties;
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile file) throws IOException {
//获取OSS
String accessKeyId = aliOSSProperties.getAccessKeyId();
String endpoint = aliOSSProperties.getEndpoint();
String bucketName = aliOSSProperties.getBucketName();
String accessKeySecret = aliOSSProperties.getAccessKeySecret();
// 获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
// 避免文件覆盖
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
ossClient.shutdown();
return url;// 把上传到oss的路径返回
}
}
调用
/**
* 上传到云端
*
* @param image
* @return
* @throws IOException
*/
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
log.info("文件上传 : {}", image.getOriginalFilename());
//调用阿里的上传
String url = aliOSSUtils.upload(image);
log.info("文件上传完成,返回的url : {}", url);
return Result.success(url);
}
这期就到这里下期见!