阿里云对象存储OSS的使用
本人是一名物联网工程专业的学生,写博客即是为了记录自己的学习历程,又希望能够帮助到很多和自己一样处于起步阶段的萌新。临渊羡鱼,不如退而结网。一起加油!博客主页:https://blog.csdn.net/qq_44895397参考官方文档:官方文档有详尽的解释,以及操作实例1、认识OSS对象存储简介阿里云对象存储OSS是阿里云提供的海量、安全、低成本、高可靠的云存储服务OSS具有与平台无关的RES
·
本人是一名物联网工程专业的学生,写博客即是为了记录自己的学习历程,又希望能够帮助到很多和自己一样处于起步阶段的萌新。
临渊羡鱼,不如退而结网。一起加油!
博客主页:https://blog.csdn.net/qq_44895397
1、认识OSS对象存储
简介
- 阿里云对象存储OSS是阿里云提供的海量、安全、低成本、高可靠的云存储服务
- OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- 您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储、归档存储作为不经常访问数据的存储方式。
相关概念
-
存储类型(Storage Class)
OSS提供标准、低频访问、归档三种存储类型 -
访问域名(Endpoint)
Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同地域的时候,需要不同的域名。 -
访问密钥(AccessKey)
AccessKey简称AK,指的是访问身份验证中用到的AccessKey Id和AccessKey Secret。
管理OSS
-
通过OSS控制台管理OSS
-
通过API或SDK管理OSS
OSS提供RESTful API和各种语言的SDK开发包 -
通过工具管理OSS
OSS提供各类型的管理工具
1、下载
2、登录
通过API或SDK管理OSS
1、开通“对象存储OSS”服务
2、获取AccessKey
3、官方文档:
2、上传文件
1、依赖:
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
2、上传模板:
3、获取三个固定参数值
public class OssUtils {
public static endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
public static accessKeyId = "<yourAccessKeyId>";
public static accessKeySecret = "<yourAccessKeySecret>";
public static String bucketName = "ykydemo";//oss服务中桶的名称
}
4、实际代码:
1、为了防止文件名相同覆盖使用UUID扩展文件名
2、方便管理,使用日期来构建文件夹
导入日期工具类的依赖:
<!--日期工具类-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
按日期生成文件夹以及随机生成的文件名:
/**
* @author 爱敲代码的小游子
* @since 2020-07-20
*/
public String updateOss(MultipartFile file) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "oss-cn-beijing.aliyuncs.com";
String accessKeyId = OssUtils.accessKeyId;
String accessKeySecret = OssUtils.accessKeySecret;
String bucketName = OssUtils.bucketName;
String uploadUrl = "";
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//防止出现相同文件被覆盖
//文件名:uuid.扩展名
String fileName = file.getOriginalFilename();
//1、防止文件名相同覆盖之前的文件-->使用uuid拼接fileName
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
fileName = uuid + fileName;
//2、把文件按日期分类管理
String time = new DateTime().toString("yyyy/MM/dd");
fileName = time+"/"+fileName;
// 上传文件流
InputStream inputStream = file.getInputStream();
ossClient.putObject("ykydemo", fileName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
//获取url地址
uploadUrl = "http://" + bucketName + "." + endpoint + "/" + fileName;
System.out.println(uploadUrl);
}catch (Exception e){
e.printStackTrace();
}
return uploadUrl;
}
3、删除文件
public boolean deleteOss(String fileName){
String endpoint = "oss-cn-beijing.aliyuncs.com";
String accessKeyId = OssUtils.accessKeyId;
String accessKeySecret = OssUtils.accessKeySecret;
String bucketName = OssUtils.bucketName;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 删除文件。key等同于ObjectName,表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
List<String> keys = new ArrayList<String>();
keys.add(fileName);
DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keys));
List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();
// 关闭OSSClient。
ossClient.shutdown();
return true;
}
更多推荐
已为社区贡献5条内容
所有评论(0)