大家好 , 我是苏麟 , 今天聊聊OSS .
这里使用阿里云的OSS对象存储.
首先大家得有一个阿里云账号 , 注册大家都会 这里不多介绍 .
阿里云官网 : 阿里云登录页 (aliyun.com)
首页产品目录下存储集合里对象存储OSS
进入对象存储OSS页面
点击管理控制台(新用户应该有免费试用期的)
进入Bucket列表点击创建Bucket填写信息(主要填写名称其他基本不用改)
endpoint 是网址在地域和存储之间
点击图像下的AccessKey管理
AccessKey ID就是 accesskey , accessKeysecret 点击查看secret 获取
在IDEA中使用
spring:servlet:multipart:#配置单个上传文件的最大值 multiPartFilemax-file-size: 10MB#配置总上传文件的最大值 multiPartFilemax-request-size: 100MB#阿里云OSS配置
aliyun:oss:endpoint: https://oss-cn-hangzhou.aliyuncs.comaccessKeyId: 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;@Autowiredprivate AliOSSProperties aliOSSProperties;/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {//获取OSSString 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("."));//上传文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.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);}
这期就到这里下期见!