对象存储oss怎么用
① 阿里云主机开放存储服务(OSS)有什么作用
OSS主要为用户提供数据存储服务,用户可以通过以下操作来处理OSS上的数据:
1、创建、查看、罗列、删除 Bucket;
2、修改、获取Bucket的访问权限;
3、上传、查看、罗列、删除Object/Object Group;
4、访问时支持If-Modified-Since和If-Match等HTTP参数。
② 对象存储OSS基本概念
用户用来管理所存储Object的存储空间。
每个用户可以拥有多个Bucket。
Bucket的名称在OSS的范围内必须是全局唯一的,一旦创建后无法修改名称。
Bucket的内部Object数目没有限制。
对于用户而言,Bucket是一个管理Object的单元,所有的Object都必须隶属于某个Bucket。
Bucket有一些属性用来控制Region、Object的访问控制、Object的生命周期等,这些属性是作用在该Bucket下所有的Object上的,因此用户可以灵活创建不同的Bucket来完成不同的管理功能。
Object是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件。
Region表示OSS的数据中心所在区域,物理位置。用户可以根据费用、请求来源等综合选择数据存储的Region。一般来说,距离用户更近的Region访问速度更快。目前已经开通的Region有杭州、上海、深圳、北京、青岛、香港、美国、新加坡。
Region是在创建Bucket的时候指定的,一旦指定后就不允许更改,改Bucket下所有的Object都存储在对应的数据中心,目前不支持Object级别的Region设置。
Endpoint表示OSS对外服务的访问域名。
OSS以HTTP REST API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。
通过内网和外网访问同一个Region所需要的Endpoint也是不同的。
AccessKey简称AK,指的是访问身份验证中用到的AccessKeyID和AccessKeySecret。
OSS通过使用AccessKeyID和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。
AccessKeyID用于标识用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret必须保密。
③ 小白使用阿里云的oss实现文件云存储
项目需要上传头像,不想存在本地,之前用过阿里云其他产品,这里就使用一下阿里云的oss了,不得不说阿里云的产品使用步骤真的很清晰.这里说一下我自己的使用步骤.
选择对象存储oss,进行开通
开通不要钱,有一定免费额度
权限可以设置为公共读
其实也就是两步
1.引pom
2.复制黏贴大法
由于阿里云一些密钥配置和地域结点,bucket等是常量级的,所以我这里抽取出来放在了application.properties中, 方便管理 ,数据我手动加密了....大家换成自己的即可,
这些配置key=value key都是自己随便写的(也不是,起码可以见名思意),只是为了我们配置的一个配置类可以利用spring的依赖注入填充value而已
说明:
说明:
我们阿里云oss仓库的url是一个咱们的仓库+固定的地域结点值+咱们的文件名字,所以这里为了使上传的文件名字不重复,使用了一个idworker,不知道的可以看一下 Twitter的 Snowflake(雪花算法)
大家搭建完了可以用postman测试一下
ps:如果我们想方便管理或者后期扩展,我们这里也可以引入一个工具
我们可以用这个工具的一个方法String dirpath=new DateTime().tostring("yyyy/MM/dd");将当前的时间转换为yyyy/MM/dd的格式,比如2020/02/03
这样我们上传的文件名字时候可以以这个dirpath作为我们的图片所在的文件夹名称,以分布式id生成器生成的id为名称存储.
下面看一下效果
④ 请教阿里云 OSS 使用方法
开始使用阿里云 OSS
阿里云 OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种结构化或非结构化数据文件。
在使用阿里云 OSS 之前,您需要了解 OSS 的几个基本概念。阿里云 OSS 将数据文件以对象(object)的形式上传到存储空间(bucket)中。 您可以创建一个或者多个存储空间,然后向每个存储空间中添加一个或多个文件。您可以通过获取已上传文件的地址进行文件的分享和下载。您还可以通过修改存储空间或文件的属性或元信息来设置相应的访问权限。
您可以通过阿里云管理控制台执行基本和高级 OSS 任务,您还可以通过阿里云开发工具包或直接在应用程序中进行 RESTful API 调用执行基本和高级 OSS 任务。有关更多信息,请参见 阿里云 OSS 开发人员指南。
本文档将向您介绍如何使用阿里云管理控制台来完成以下基本任务。
开通 OSS 服务
创建存储空间
上传文件
分享文件
删除文件
删除存储空间
有关阿里云 OSS 功能和定价的相关信息,请参见阿里云 OSS 产品页。
https://help.aliyun.com/document_detail/31883.html?spm=5176.7933691.203455.1.XuguE7
⑤ Joplin利用阿里云对象存储(OSS)进行同步操作
目前刚用Joplin没多久,然后发现这个软件的同步操作默认是用dropbox的,但我又没用过dropbox,然后网上好像说这个用起来还有些限制之类的,然后常用的网络网盘之类的又不支持Joplin的同步,后面在网上看到一篇 Joplin使用腾讯云对象存储(COS)进行同步 的文章,然后想到落灰很久的阿里云,上去自己捣鼓了一下,发现也是可以用阿里云的对象存储来做同步的,具体操作还看了下 这篇文章 阿里云oss对象存储访问的使用
具体的一些介绍和收费情况可以自己上官网去看一下,我是买了个资源包然后好像是可以抵扣费用之类的,反正看着挺便宜的,其实具体是怎么计费的也不是很清楚
创建完后,就会有一条Bucket记录了
创建完后就能看到创建的子账号了,然后我们需要进入用户信息界面,创建AccessKey,这个到时候需要填到joplin的同步设置里面,创建的时候会弹框现实AccessKey和AccessKey Secret,记得保存好AccessKey Secret,不然后面只能重新创建了
创建好AccessKey后 ,就需要对Buccket进行设置,让刚刚创建的子账号能操作Buccket
我目前用的joplin是2.7.13版本,在joplin的“工具”菜单下拉选项中,有个“选项”菜单,点击后,就进入下面页面。其中同步目标选择 S3 (Beta), 存储桶名称就填创建的Bucket的名称,然后下面是S3 URL和S3地区两个选项,需要根据你创建Bucket时选择的地区,然后去 对象存储文档 中的“访问域名和数据中心”内容里面找你选择的地区,就能看到对应的内容了。然后S3访问密匙就是刚刚创建的用户AccessKey,S3密匙就是 AccessKey Secret,都填上后检查同步配置按钮,成功的话就算是配置好了
⑥ 【ceph】对象存储的目录/文件夹概念
对象存储(OSS)中文件夹的概念仅是一个逻辑概念,在通过API/SDK的方式设置文件夹的时候可以指定object对应的key值包括前面的目录即可实现该功能。例如,定义object的key为abc/1.jpg就会在该bucket下创建一个abc的文件夹,而在文件夹下即会有一个1.jpg的文件。
对象存储(OSS)中的文件夹其实是一个大小为0KB的空文件。因此,用户创建一个key值为1/的object就会定义文件夹1;并且如果用户创建文件abc/1.jpg,系统是不会创建abc/这个文件的,因此在删除abc/1.jpg后将不会再存在abc这个文件夹。
由于对象存储(OSS)采用的是分布式存储的方式,object并不是根据文件夹进行物理存储的。也就是说并不是一个文件夹下的所有的文件都会存储在一起的。在后端存储的过程中不同的文件夹的文件仅仅是key值的前缀不一样。因此这种架构下就会导致无法很方便的统计某个文件夹下的汇总信息,如文件夹大小、文件夹PV数等。而想要遍历某个文件夹下的所有的文件也需要首先通过ListObject接口获取文件夹下的所有文件的key值(这里需要通过prefix指定文件夹),然后再进行操作。
在逻辑上“中国.mp4”将存放到目录“videos”中
https://help.aliyun.com/knowledge_detail/39527.html
https://www.jianshu.com/p/4212d37c0e0f
⑦ oss对象存储会减小页面的资源大小吗
对的!
在当今的云计算世界中,对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。这样的服务不是将文件分成块并使用文件系统将它们存储在磁盘上,而是与存储在网络上的整个对象一起工作。这些对象可以是图像文件,日志,HTML文件或任何自主字节块。它们是非结构化的,因为它们没有必须响应的特定方案或格式。
由于API由标准HTTP请求组成,因此很快就会出现大多数编程语言的库。要保存数据对象,只需向对象库发送HTTP PUT请求即可。可以使用常规GET请求检索文件和元数据。大多数对象存储服务还可以向用户发布文件,从而无需维护Web服务器来托管静态资产。
此外,对象存储服务仅针对已用空间收费(对于某些用户,还支付HTTP请求和带宽)。对于可以获得高质量存储,放置资产而不会过度支付的小型应用程序而言,这是一个很好的选择,并根据需要扩展存储。
⑧ day06项目【整合阿里云OSS和Excel导入分类】
为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。
1、开通“对象存储OSS”服务
(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台
2、创建Bucket
选择:标准存储、公共读、不开通
3、上传默认头像
创建文件夹avatar,上传默认的用户头像
1、在service模块下创建子模块service-oss
2、配置pom.xml
service-oss上级模块service已经引入service的公共依赖,所以service-oss模块只需引入阿里云oss相关依赖即可,
service父模块已经引入了service-base模块,所以Swagger相关默认已经引入
3、配置application.properties
4、logback-spring.xml
5、创建启动类
创建OssApplication.java
6、启动项目
报错 :
spring boot 会默认加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration这个类,
而DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean,又因为项目(oss模块)中并没有关于dataSource相关的配置信息,所以当spring创建dataSource bean时因缺少相关的信息就会报错。
即可成功:
1、从配置文件读取常量
创建常量读取工具类:ConstantPropertiesUtil.java
使用@Value读取application.properties里的配置内容
用spring的 InitializingBean 的 afterPropertiesSet 来初始化配置信息,这个方法将在所有的属性被初始化后调用。
2、文件上传
创建Service接口:uploadFileAvatar.java
实现:OssServiceImpl.java
参考SDK中的:Java->上传文件->简单上传->流式上传->上传文件流
3、控制层
创建controller:FileUploadController.java
4、重启oss服务
5、Swagger中测试文件上传
解决上传文件覆盖问题:
测试:
6、配置nginx反向代理
配置nginx实现请求转发的功能:
验证:
1、复制头像上传组件
从vue-element-admin复制组件:
vue-element-admin/src/components/ImageCropper
vue-element-admin/src/components/PanThumb
2、前端参考实现
src/views/components-demo/avatarUpload.vue
3、前端添加文件上传组件
src/views/e/teacher/save.vue
template:
引入组件模块:
4、设置默认头像(也可不设置)
onfig/dev.env.js中添加阿里云oss bucket地址
组件中初始化头像默认地址
5、js脚本实现上传和图片回显
二、测试文件上传
前后端联调
1、数据导入:减轻录入工作量
2、数据导出:统计信息归档
3、数据传输:异构系统之间数据传输
1、EasyExcel特点
Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。
EasyExcel是阿里巴巴开源的一个excel处理框架, 以使用简单、节省内存着称 。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。
1、创建一个普通的maven项目
项目名:excel-easydemo
2、pom中引入xml相关依赖
3、创建实体类
设置表头和添加的数据字段
4 、实现写操作
TestEasyExcel.java
(1)创建方法循环设置要添加到Excel的数据
(2)实现最终的添加操作(写法一)
(3)实现最终的添加操作(写法二)
public static void main(String[] args) throws Exception {
// 写法2,方法二需要手动关闭流
//实现excel写的操作
//1 设置写入文件夹地址和excel文件名称
String filename = "F:\write.xlsx";
ExcelWriter excelWriter=EasyExcel.write(fileName,DemoData.class).build();
WriteSheet writeSheet=EasyExcel.writerSheet("写入方法二").build();
excelWriter.write(data(),writeSheet);
/// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
1、创建实体类
2、创建读取操作的监听器
3、调用实现最终的读取
public class TestEasyExcel {
public static void main(String[] args) {
//实现excel读操作
// 写法1:
String filename = "F:\write.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet().doRead();
// 写法2:
InputStream in = new BufferedInputStream(new FileInputStream("F:\01.xlsx"));
ExcelReader excelReader = EasyExcel.read(in, DemoData.class, new ExcelListener()).build();
ReadSheet readSheet = EasyExcel.readSheet(0).build();
excelReader.read(readSheet);
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
}
1、编辑Excel模板
2、将文件上传至阿里云OSS
1、添加路由
2、添加vue组件
1、js定义数据
2、template
3、js上传方法
4、回调函数
1、service-e模块配置依赖
1、ESubjectController
2、创建和Excel对应的实体类
3、ESubjectService
(1)接口
(2)实现类
4、创建读取Excel监听器
1、参考 views/tree/index.vue
2、创建api
api/e/subject.js
3、list.vue
1、创建vo
2、创建controller