1、对象存储OSS
数据,文件的存储的几种方案:
- 数据库(MySql)+ 文件(本地,IO流)
- 数据库(MySql)+ 缓存(Redis)+文件(服务器集群上,如fastDFS集群,HDSF(大数据))
- 数据库(MySql)+ 缓存(Redis)+文件(OSS上)
OSS 就是为了解决海量数据存储和弹性扩容,可以采用七牛云、阿里云 、腾讯云
2、阿里云OSS
开通服务
登录阿里云官网https://homenew.console.aliyun.com/
搜索OSS,开通服务
创建一个Buyket库,创建一个目录avatar,上传头像
开通后,点击对象存储的控制台,点击bucket列表
点击创建bucket
读写权限选择公共读
了解bucket的计费规则,按量计费。
点击对应的bucket
点击文件管理,创建目录avatar,
上传文件测试
使用子用户权限操作(安全)
点击头像,选择AccessKey管理
,接下来就是
1、创建用户组
2、创建用户
点击“用户”,点击“创建用户”
记得勾选编程访问,点击确定。
登录名称,AccessKeyID,AccessKeySecret,java程序访问的时候连接要用到。
3、添加用户到用户组
点击“用户组”
点击“添加组成员”,选择刚刚创建的用户,完成绑定。
4、给用户组分配权限
在用户组,点击“添加权限”
选择“AliyunOSSFullAccess” 管理对象存储服务OSS权限
5、保存账号信息
将用户名、AccessKeyID、AccessKeySecret保存下来。
测试基本API
两步:
1、找到官方文档
2、练习基本API
Java sdk 快速入门
下载maven示例工程了解。
创建测试工程
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "oss-cn-beijing.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用RAM账号进行API访问或日常运维,
// 请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
访问域名
EndPoint 地域节点,Bucket域名在Bucket列表下点击你要用的bucket,在基本信息可以找到
OSS sdk的五种上传文件方式
@Test
public void test(){
// 1.创建oss 实例,面向对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 2.创建bucket,但是读权限是私有的,需要修改为公共读
ossClient.createBucket(bucketName);
// 判断bucket是否存在
boolean exist = ossClient.doesBucketExist(bucketName);
// 修改为公共读
ossClient.setBucketAcl(bucketName,CannedAccessControlList.PublicRead);
// 3.上传文件流 到oss后需要一个文件名(保证唯一 /2020/4/1/xxxxxxxx.jpg)!
String objectName = "avatar/default.jpg"; // avatar为bucket下的目录名
ossClient.putObject(bucketName, objectName, new File("C:\\Users\\Administrator\\Desktop\\dafault.jpg"));
// 4.下载文件
String objectName = "avatar/default.jpg";
ossClient.getObject(new GetObjectRequest(bucketName,objectName),new File("a.jpg"));
// 5.查看文件列表
ObjectListing objectListing = ossClient.listObjects(bucketName);
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " " +
"(size = " + objectSummary.getSize() + ")");
}
// 6.删除文件
String objectName = "avatar/default.jpg";
ossClient.deleteObject(bucketName,objectName);
// 关闭对象
ossClient.shutdown();
}
3、创建OSS微服务
Nginx 增加配置指向oss服务
location ~ /oss/{
proxy_pass http://localhost:8130;
}
Swagger 测试文件上传。
4、头像上传
使用vue-image-crop-upload组件上传头像
github地址https://github.com/dai-siki/vue-image-crop-upload
demo地址https://dai-siki.github.io/vue-image-crop-upload/example-2/demo.html
效果