2019独角兽企业重金招聘Python工程师标准>>>
官方文档地址: https://help.aliyun.com/product/31815.html
什么是OSS
Object Storage Service,是阿里云提供的对象存储服务,具有与平台无关的RESTful API,可以方便快捷地上传、下载、检索、管理用于web网站或移动应用的海量文件。
OSS里面几个重要的概念:
快速入门
1,进入OSS控制台,创建一个Bucket,将权限设置成“公共读”
2,进入bucket,依次点击:文件管理-新增目录,目录名叫“2018”;然后进入2018,点击:上传文件,上传一张图 bg.jpg,成功后回到列表
3,点击图片,进入详情页
注意文件名显示的是"2018/bg.jpg",含目录,这种文件名就是OSS对象的Key,具有唯一性
文件URL的构成规则是:http://bucket.Endpoint/key
集成模式
应用系统集成OOS,有两种模式
1)应用服务器转发
转发,即用户端会先把文件上传到应用服务器,应用服务器再上传到OSS,相当于文件在网络上传送了两次(如果应用服务器也是阿里云的,请将第二次上传设置成内网传输)。
这种模式很传统,但如果文件较大或者上传并发较大时,应用服务器就会出现瓶颈。
2)直传OSS
直传,即web端(包含app下的h5)或者移动应用端(android/ios),直接将上传地址指向OSS。整个过程,需要进行“鉴权”及“回调”处理,略微繁琐。web端和移动应用端,两者除了鉴权有些区别,其他都差不多,下面给出web端直传的流程图:
这种模式,应用服务器几乎没有带宽压力,上传速度快,并发性能好。
需要注意
1,为了避免OSS文件重名时的自动覆盖,上传时可以指定不同目录或者重命名。
2,为了避免“公共读”权限的资源目录被暴力遍历,文件命名时,请不要使用类似“时间戳”这种方式。
3,OSS文件删除之后,打客服也找不回来,所以对于重要的文件,请勿删除,或者自行设计回收站。
4,应用系统收到OSS的Callback请求时,务必先进行签名验证。
增值服务
OSS提供了强大的增值服务,比如音视频转换,图片压缩、裁剪等等。
举个小例子
近期看到很多公司在搞H5活动:海报图下面有个二维码,海报可以保存和传播。如果业务要求这个二维码是动态的,显然可以通过图片水印的方式实现 。
我们在“2018”目录下已经有个背景图叫bg.jpg,现在再传一个二维码叫osc.png,其OSS对象名就是:2018/osc.png,base64是:MjAxOC9vc2MucG5n,如果我们想把二维码贴在右下角边距10px处,则最终的合成图的URL就是:
http://xyy-test.oss-cn-beijing.aliyuncs.com/2018/bg.jpg?x-oss-process=image/watermark,image_MjAxOC9vc2MucG5n,g_se,x_10,y_10
我们自己实现水印功能不难,但是跟这个实时的URL比起来就逊色不少,省代码、省存储、省心。