飞天班第20节:企业项目研发(四)OSS云存储

2020/04/11

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

效果

Post Directory