00:00
大家好,这一小节我们来处理一下这个上传的问题,那我们的上传呢,使用的是阿里云的这个oss上传。我们在处理这个上传的问题之前,先给大家啊,花很短的时间去简单的去介绍一下阿里云oss,以及我们为什么要使用阿里云oss啊。这是阿里云的官网啊,我们要使用的是什么?阿里云的oss云存储对吧?从它的这个产品里面,在存储里面可以找到它的这个对象存储啊,那这个我们就不看了啊,我们要看什么,看文档来给大家介绍为什么要用阿里云的这个oss,那在这个文档里面存储里面找到。对象存储oss啊。来看一下对象存储服务啊。是一种海量安全,低成本,高可用的云存储服务,适合存放任意类型的一个文件啊,这是它官网的一个一个介绍啊。
01:01
嗯,为什么要使用这个。这些云存储呢?我我给大家举一个例子,大家就明白了。好,假如。我们服务器的这个。哎,这个带宽就是网络的带宽,因为服务器我们要访问服务器,服务器它自己会有自己这个网络的带宽啊,我们就假定它是100兆,然后现在有有十个用户在向服务器去上传这个视频,每个视频一个G啊啊,那是不是这十个用户就有可能把这个。呃,这个网络的这个带宽给占满,其他的正常用户就访问不了了,是吧,那这是一个问题,我们再来。想第二个问题啊,假如我们服务器啊,服务器呢,你就可以把它理解成就是一台电脑对吧,那我们电脑电脑它是有硬盘的啊,有这个磁盘空间的,假如我们服务器的磁盘空间是。100个G啊。然后现在是100个人在上传视频,每个视频一个G,是不是这100个人就把你的这个服务器给上传,就是给占满了,就是你的磁盘空间给占满了,对吧?那你可能说了,那我可以扩容我的这个我的服务器的这个磁盘。
02:10
那我告诉你当然是可以的。但是。你要知道云服务器的这个磁盘的空间是非常昂贵的,以及它的这个网络成本是都是非常昂贵的,昂贵到什么程度,我来给大家看一看啊,比如我们现在去买一台这个云服务器ec,然后。啊,我就直接立即购买。啊,那这是。呃,这个购买这个云服务器的一个。界面啊,给大家看一下这个。磁盘和这个网络有有多昂贵啊,这个处理器我们就不管了,那现在来看这个磁盘啊。就假定现在我们看到的是两千八是不是好两千八的这个磁盘呢,只有这个40G,那我给它加到比如说。加到400G,你可以看钱增加了多少。增加了将近2000对吧?好,你说你加到这个啊,这个数据盘,因为这个第一个这个云盘的话,它只要你最多只加了500G,那我们如果还有更多的这个需求的话,可以加这个其他的硬盘,那我们再比如说再加一份数据盘。
03:14
然后这个数据盘呢。哎,我们来来一个2T的吧,啊,大约是。2T的。嗯。就是22000GB嘛,大约是2G啊,可以看这个钱增加了。两万多。啊,如果你想想,如果一个视频一个G,你2T的硬盘也就存200个,就是呃,存2000个视频左右,对吧,那两千个用户可能给你加满了啊。那如果你要再增加一倍啊,你用20T的一个硬盘,你看看这个钱已经到了20多万,翻了多少钱,这只是这是硬盘的这个开销清楚了吧?啊,那接下来呢。我先把这个都剪掉啊,还让他用最开始的默认的这个啊,接下来给大家看一看这个网络的开销。
04:04
来,我看看是这个版本啊,先随便选一个版本啊,要不然不然我下一步。因为下一步才能选落选选举这个网络啊。嗯。接着啊,注意我们的这个钱,你就看这个钱就可以。啊,因为这个是他有这个活动,所以比刚才的那个我们看的钱少了一些啊,我们就注意这个钱是。一千二对吧。来按照我刚才说的,我们啊,比如说可能有大量的用户同时上传文件,我们的这个带宽必须得够,才能支持这么多用户去上传,对吧,假如我先调到50兆,你看看多少钱。从1000多增加到三万多对吧,那你如果按照我刚才举例说,诶,我们可以把这个带宽调到100兆。那就是8万吨对吧,增加了8万,那如果你要想满足更大的一个速度的话。已经到了16万,就是200兆。所以你你自己来看一下。
05:01
假如我们的这个应用啊,就是一个视频类的应用,比如说类似于这种嗯,B站啊等等的,用用户大量的去上传这个视频,大量的上传这个文件啊,那你要保证很多,就是说这么多用户都能正常使用的情况下,你必须你的这个云服务器得有足够大的一个磁盘空间,对吧,所以刚才给大家上一步演示的。买那个磁盘空间是不是特别贵。哎,我们加了一个只是20T的而已,钱就到了十几万,接着呢,如果大量的用户要去上传,我们还要保证这个网络,这个带宽足够。啊,这里也给大家看到了,如果我调到这个200兆的这个带宽。已经也是到了十几万啊,看到了吧。所以这个这个开销真的是特别特别的大。明白了没有,这也是为什么我们要使用对象存储,对象存储其实就是帮我们存文件的地方,我们可以把我们的文件存到这个对象存储里面。啊,然后用户上传的时候直接就上传到阿里云的这个对象存储里面,这样的话,首先文件在这个对象存储里面存着,而且上传的时候也是上传到这个对象存储里面,那就对我们服务器的这个带宽的依赖就特别小了啊,因为这个文件就可能就不走我们服务器了,对吧,也不存在我们服务器,所以我们我们服务器的话,云服务器我们的硬就是说磁盘就可以不要那么大,网络也可以不要那么高啊,可能就是说哎,一二十兆网速就够了。
06:25
清楚了吗?这个钱能能省很多啊。大家可能不信,你光说省省省,那你让我看看这个对象存储的费用啊,来给你看看他的这个价格。计量计费啊。找一找他的这个。看他的计费案例吧。啊。比如看这个存储了这个500G的一个文件。啊,他的这个费用呢,大概是。可以看到每个月才60元对吧。看到了吧,包括这个你请求的这个费用,就是访问啊,或者上传啊,请求的这个费用是不是也比较便宜。
07:03
啊,包括他这个流量费用,那假如你就是放大,再放大一下,这个是相当于0.5T,你再乘以15T的话,你再乘以十也就才几百块钱,跟刚才我们去看这个服务器它的这个。呃,磁盘的这个消耗,以及这个网络的开销上来就一二十万一二十万是不是小了很多。清楚了吧,这也是为什么我们要使用这个对象存储oss,好,大家先知道为什么要用啊。接着再我们再说怎么去用。那这个先关了啊。这个我们再找一下这个文档吧,刚才那个网页卡死了。接着找到存储。嗯,找到云存储那。呃,了解了为什么要用啊,我们稍微写一个总结吧,那为什么要用呢?为什么?要用云存储,我这里拿云存储代替啊,因为呃,这个市面上有很多云存储,像阿里云的oss,嗯,犀牛的云存储,以及腾讯的都有很多啊,所以我们这个用云云存储代替,一个是这个存储费用低。
08:15
服务器的这个磁盘太贵了,太昂贵了,真的是,所以我们用这种云存储的话,它的存储费用是比较低。再一个就是。这个。呃,流量费用低,流量费用低,而且这个不占用服务器的带宽,对吧,服务器带宽。嗯。上传或者下载啊,不占用服务器带宽啊,那这个存储费用低呢,它可以就是不占用这个呃,服务器的这个呃磁盘空间,因为我们完全可以把这个文件去啊使用这个。云存储去存储吗?不占用服务器磁盘空间。这时。
09:00
啊,我们最主要的这个两点啊,实际上还是。怎么省钱怎么来嘛,对吧。怎么这个性能好怎么来嘛。用给用户的体验啊,用户怎么这个访问快,我们怎么来是吧,就是这么回事啊。接着来想一下第二个问题,怎么去用啊,那怎么去用呢?还是在这个文档里面,我们直接找到最佳实践啊,这个就是他给你介绍了这个云存储在各个场景下的一个应用啊,我们就是看这个外部端啊,我们写的是web项目啊。外部端呢,我们看这个web端的这个直传时点啊。嗯,首先简单给大家介绍一下为什么要使用web端的表单直接上传到oss啊,这里给大家画一个图。截下图啊,那假如这个是用户的啊浏览器啊,浏览器呢,我就用这个这个B代替啊B。
10:04
好。然后。他呢,现在要上传这个文件到我们的这个服务器啊,这是我们的服务器。啊,这是oss。啊,我把这个字写清楚吧,浏览器,然后这个是我们的服务器。然后这个是oss啊好。我们先不说oss的事,在以前我们就是不使用oss的时候,那用户就是浏览器要上传文件,就得把文件传到服务器对吧?啊,那服务器上给他存着啊,这时候文件在传输的过程中,这个网络带宽肯定是被占用着的,会影响其他用户的一个体验。清楚吧,啊,那现在我们使用了这个oss啊,那oss呢,它有这么几种使用方式,一种使用方式就是说。
11:00
呃,你把这个浏览器里面,就是说用户选择了文件之后传给服务器,服务器再传给oss对吧,这是一种使用方式,但是这种使用方式大家会发现了,还是经过我们服务器了,那还是会占用这个服务器的带宽,所以不被推荐。清楚了吧,那所以他这个文档里面的最佳实践也是说是不经过服务器啊,直接用户浏览器上传文件到oss。就是跟我们服务器压根没有什么关系。清楚了吧,啊好。那接下来我们来想一个问题啊。那跟这个我们服务器都没有关系了,你浏览器你直接把文件传到oss,那那是不是大家谁都能传呀,那是不是一点安全性都没有啊,诶这就是。我们要说的一个事情,你浏览器想要向oss去传递文件,你必须得拿一个签名。清楚了吧,就是必须得有签名,来,我把它写到这里。浏览器当然不是必须的啊,这个根据你oss的设置,你如果设置成这种公共读写,就是大家随便都可以读写的话,那是不需要签名的,但一般谁这么傻。
12:08
是吧,我们肯定要设置需要验证的啊,一般情况下啊,一般浏览器啊,所以我不把话说这么绝对吧,啊就说一般浏览器,嗯,直接向osss。啊,传文件。啊,需要需要什么,需要授权嘛,我们就说授权对吧,你如果没有授权,我为什么让你传文件对不对,那这个授权。怎么来就是授权怎么来好,所以他这几步的这个最佳关键就是最佳实践。就主要是在解决这个授权的这个问题。那你既然需要授权,好,那我在浏览器端,我用GS给你生成一个这个签名啊,也叫签名啊,然后你带着这个签名就可以传给oss了啊,授权签名。啊,这是他的第一种方案就是,呃,因为我这是节奏,我先不关啊,先跟大家说,就鼠标这里啊。
13:06
啊,结构可也行,这就是他的第一种方案。在这个浏览就是客户端用GS,然后生成一个签名。然后我们上传文件的时候,带着这个签名给oss。哎,我这个OS,呃,验证一下你的签名,发现是符合规定的啊,那就让你过了,就让你传文件了,对不对,好,这是第一种方法,那为什么不是最佳呢。大家想一想。我们在这个浏览器端的东西有安全的吗?你GS签名。那你签名需要什么,签名肯定是需要我们的这个账号里面的这个啊,这个AKSK啊,也就是说我们的呃。就是说我们的。密钥啊,需要我们自己的账户密钥,你如果把你的密钥你放到浏览器端,那别人用户是不是随随便便就拿到了。是不是不安全?啊。所以这种方式就pass掉了啊,我拿小来写一下就pass掉了,不安全啊,那接下来。
14:04
那肯定有比较安全的方式,那就是服务端签名后再直传啊,我的这个画的不好看啊。来这个用这个画一下,就是服务端签名后上传,我拿这个图示给大家。用这个图给大家画一遍啊。浏览器请求服务器啊,请求什么呢?去请求这个。请求签名啊,请求这个签名和授权啊。他。这个时候只他只是发起了很普通的一个请求啊,就是类似于我们请求一个阶层数据什么样的啊,很普通的请求,所以这个不是特别占用服务器的资源,好服务器呢啊,根据。我们就是说我们会把我们账号的这个这个密钥配在服务器上,因为服务器一般用户是进不了我们服务器的,对不对,所以服务器还是比较安全的,我们把我们账户的密钥配置在服务器上,那服务器根据我们账号的密钥生成这个签名的授权之后,把这个签名的这个授权返回给浏览器。
15:07
清楚了吧,返回给浏览器啊。来这里写下啊,服务器根据根据配置的密钥啊,生成签名返回给浏览器。来往这拖一拖,这是我们这一步,好,那浏览器现在就有签名了,就是这个授权和签名啊,我们把这个放这儿啊,就是说一般浏览器你要直传的话,需要签名,所以浏览器先去服务端请求授权啊,以及这个再返回浏览器啊,好这个时候。我们把这个。就写到这啊,浏览器带着签名啊,同时也带着这个文件,就一块去请求着oss,那oss呢。
16:00
他要验证签名啊。就是。通过之后验证通过啊,验证通过啊,允许上传,就是这才是最佳时间的一套啊,允许上传。看见这个流程了吗?先从最最开始去分析啊,就是你要想像我OS上传,一般情况下,我设置的是私有库的话,那你可能就得需要这个签名,那你浏览器你直接想给我传文件,你签名怎么办呢。啊,你如果在浏览,就是说浏览器上直接生成,那我们的这个密钥就泄露了,因为签名是依赖于我们账号中的这个密钥的,好吧。那我们把这个密钥放到服务器上,服务器生成签名,服务器生成签名之后反馈给浏览器,浏览器带着这个签名。啊,带着文件啊,带着签名一块去请求SS验证通云上传,但是上传之后呢,Oss啊,他上传完成之后还会做两件事情啊,告诉浏览器诶上传成功了。
17:02
啊,会把你就会把它存储的这个文件的这个名字啊,什么什么的都告诉浏览器,因为浏览器它要获取到我们上传或者这个文件名啊,他要就是随着表单一起再提交给服务器啊。清楚了吧,啊好,这是。嗯,Oss会做的一步啊。嗯,我们写到这里吧。Oss。嗯。就是说保存文件后吧,保存。文件后通知通知浏览器啊,通知浏览器。通知乱写会把这个文件的那个数据啊,并带着呃,存储的文件的一些信息,存储的文件信息啊给这个浏览器,这样浏览器就能拿到,比如说图片的地址,文件的地址啊,文件的名字啊等等等等这些信息清楚了吧,这是oss上传成功之后干的第一件事,他还会再干一件事情啊,当然这个事情并不是绝对的,就看我们配没配置。
18:07
他会再通知服务器一份。哎,就是。530。嗯,保存文件后,那我就直接复制这个吧。因为他俩是一样的,只不过是111,呃,一个是通知浏览器,一个是呃通知服务器,这是通知服务器,嗯,然后诶哪个文件上传成功了,然后他的这个文件信息,文件名是什么,地址是什么,怎么怎么样存在哪个库啊。这就是整个最佳时间的一个流程。清楚了吗?好,这个图。大家先记一下啊,脑子里记一下,我就把它关掉了,因为这是个截图,关掉之后我们再来看这个文档里面怎么说来。首先啊。嗯,这个说为什么要使用外部,呃,就是说浏览器上直接去传,因为我们传统的这个方式的话,你要是呃这个经过服务器,你看如果传统的方式把文件上传到应用服务器,我们服务器再把文件上传oss,这种方式需要用服务器做一下中转,效率特别特别的低,对吧?所以我们直接把文件啊,通过浏览器直接传给oss,然后这是他大致的一个流程,客户端在这个呃,就是使用GS进行签名,然后表单传数据到SS啊,这是一种方式。
19:23
然后这是第二种方式,在服务端完成签名,然后传到YS对吧,这个这个方式也大说了,还有第三种方式,在服务端完成签名后,并且在服务端设置了上传回调,那这个oss回调完成之后,会将这个应用,就是服务器的这个响应结果反给客户端啊,我们应该看先看这个GS的啊。这是他几个的这个。啊,使用的这个步骤啊,然后我。直接给大家看这个GS的代码,你们就明白是什么意思,比如说这个upload.gs他把这个AK啊,这是你看这个aksk。
20:02
PK就是一个是,然后是SK,这两个就相当于你的这个这个账号和密码了,你账号和密码你都放在这了,你让别人拿到这个GS,你说安全吗?肯定不安全呀。啊。好。所以说不是特别安全啊。然后看看注意事项里面他有提提过没有。但是哦,这说了,客户端通过这个GS把这个AKSK写在代码里泄露的风险啊,人家就建议你采用这个服务端签名之传,所以这个我们就不看了,知道怎么回事就行了。然后看服务端签名之长。这边也给了这个流程图,其实跟我刚才画的差不多啊,你看比如说用户就是这个,呃,就是我们认为就是浏览器吧,对吧。他发送他,他请求我们的服务器,我们服务器呢,把这个签名啊。就是策略,就是策略和签名,当是返回信息比较多嘛,我刚才只拿签名举例,返回给浏览器,然后浏览器就是用户带着这个签名和文件直接去请求oss,清楚了吧?啊,因为服务器端可能没有配置回调,所以oss没有去通知服务器,你在下面这个它就会通知了,来看一看啊。
21:08
来这一步就是我最终画的那个图啊,用户向我们服务器请求授权,然后服务器返回授权给用户,然后用户呃,带着这个文件和授权把文件传给这个oss对吧?那oss存储好文件之后,根据用户就我们设置的这个,呃,回调通知一下服务器,然后服务器再告诉我SS,哎,我收到通知了,那这个刚才没给你打电话啊,然然后oss在通知服务器的同时,还会通知浏览器啊,你这个有文件上传成功了,你的文件名是什么啊,文件地址什么,就是这么一个流程。清楚了吧,啊,所以刚才我画的那个图大家看的比较乱的话,你看这个也可以。好吧。啊,然后。嗯,说白了,我们写前端的是不是,那这跟我们什么关系啊,那我前端我就我就想要前端,我的我的浏览器端,我就想传图片到服务器,所以我就前端我需要需要这个只需要你服务器能给我这个签名和这个策略,是不是就可以是这样的吧?好,那来看我们的接口。
22:08
找到我们的这个A里面,你去找到这个认证API里面,你注意它会有一个oss talking,这个接口已经给大家写好了,你只要请求这个API。这个API就会给你返回,就是我们这边需要的,就是你前端上传文件需要的这个这个策略和签名,明白了吧,你们看来返回什么信息,是不是有这个应用的ID,然后有域名,有策略,有签名,有这个过期时间回调函数对吧,有上传的目录等等等等。清楚了吗?好。那这节课呢?给大家介绍了一下。为什么要用云存储,以及怎么去用,那在下一节课我们就真真正正的把我们的这个上传和阿里云的这个oss给配合起来,好,这小件先到这。
我来说两句