oss
阿里云OSS分布式对象存储介绍开通
介绍
对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务设计可用性不低于99.995%。
OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
提供标准、低频访问、归档和冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景:
| 标准存储类型 | 高持久、高可用、高性能的对象存储服务,支持频繁的数据访问。是各种社交、分享类的图片、音视频应用、大型网站、大数据分析的合适选择。 |
|---|---|
| 低频访问存储类型 | 适合长期保存不经常访问的数据(平均每月访问频率1到2次)。存储单价低于标准类型,适合各类移动应用、智能设备、企业数据的长期备份,支持实时数据访问。 |
| 归档存储类型 | 适合需要长期保存(建议半年以上)的归档数据,在存储周期内极少被访问,数据进入到可读取状态需要1分钟的解冻时间。适合需要长期保存的档案数据、医疗影像、科学资料、影视素材。 |
| 冷归档存储类型 | 适合需要超长时间存放的极冷数据。例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等。 |
开通阿里云OSS
- 有阿里云账号、实名认证
- OSS介绍:https://www.aliyun.com/product/oss
- OSS控制台:https://oss.console.aliyun.com/bucket
- 学习路径:https://help.aliyun.com/learn/learningpath/oss.html
开通后的操作
1.创建Bucket



阿里云ram权限管理介绍
文件上传流程
- web控制台
- 前端->后端程序->阿里云OSS


-
云账号 AccessKey
- 访问阿里云 API 的密钥,具有该账户完全的权限
-
RAM权限介绍
-
阿里云用于各个产品的权限,基于RBAC模型,进行简单管理账号、统一分配权限、集中管控资源,从而建立安全、完善的资源控制体系。
-
众多产品,一般采用子账号进行分配权限,防止越权攻击
-





返回添加权限,给oss分配所有权限

阿里云OSS对象存储客户端集成和测试服务基于springboot
<!--阿里云OSS 依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>

配置类
@ConfigurationProperties(prefix = "aliyun.oss")
@Configuration
@Data
public class OSSConfig {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketname;
}
业务逻辑
@Service
@Slf4j
public class FileServiceImpl implements FileService {
@Autowired
private OSSConfig ossConfig;
@Override
public String uploadUserImg(MultipartFile file) {
// 获取相关配置
String bucketname = ossConfig.getBucketname();
String endpoint = ossConfig.getEndpoint();
String accessKeyId = ossConfig.getAccessKeyId();
String accessKeySecret = ossConfig.getAccessKeySecret();
OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
// 获取原始文件名
String originalFileName = file.getOriginalFilename();
// jdk8 日期格式
LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 拼接路径,oss上存储的路径 2022/2/2/ssss.jpg
String folder = dtf.format(ldt);
String fileName = IdUtil.simpleUUID();
String extension = originalFileName.substring(originalFileName.lastIndexOf("."));
// 在oss上创建 1024-User/ 文件夹
String newFileName = "1024-User/"+folder+"/"+fileName+extension;
try {
// 推送
PutObjectResult putObjectResult = ossClient.putObject(bucketname, newFileName, file.getInputStream());
// 拼装返回路径
if (Objects.nonNull(putObjectResult)){
String imgUrl = "https://"+bucketname+"."+endpoint+"/"+newFileName;
return imgUrl;
}
}catch (IOException e) {
log.info("文件上传失败:{}",e);
}finally {
// oss关闭,不然会造成内存泄漏
ossClient.shutdown();
}
return null;
}
}

浙公网安备 33010602011771号