00:00
大家已经看见了啊,我们这个表单写好之后点击提交啊,服务器已经可以接收了,那么我们再来看一下,那么提交之后这边服务器这边如何去处理呢?他又收到了哪些内容,咱们怎么看,大家注意看啊,对于文件上传,咱们要看一下这个HTP协议里面到底是哪些样式的效果。哎,好了,咱们打开F12,大家注意看一下哈,我们点击提交上传,哎,咱们把这个HP协议啊,就拿出来给大家好好解释一下。OK。好,然后呢,这是请求函和请求头,下面这一部分呢,是这个请求体。
01:01
啊,请求体好,我们把一些边框啊给它先去掉。啊。好了,接下来呢,我们解释一些内容啊,把这个稍微往上移一下。OK,好了,大家注意看,这整个呢,就是文件上传时,他发送的HTTP协议的内容。文件上传时,哎,那么发送的HTTP协议内容啊,这个先知道一下。OK,那么这里呢,我们要介绍哪些内容呢?首先一个啊,为什么是POS请求,咱们前面基出曲都讲过了,Get请求的话,它是有长度限制的啊,而post上传的文件呢,一般都会超出这个,呃,它的长度限制,所以我们只能用post,那这个in code typeone date这个表示啥?
02:16
咱们稍微把这说明一下哈,Type等于Mo。Part风杠,Date表示什么?表示提交的数据?哎,什么呢,多段的形式进行拼接。啊,然后以二进制流的形式发送给服务器啊,先知道下它有什么用啊,那么什么叫做多段呢?大家注意每一个表单箱啊,一个数据段啊,每一个表达项一个数据段,那怎么看呢?来大家请看一下哈。
03:10
在这个地方。叫做contain type,这个地方有两个点,咱们要说明一下。诶,首先呢,第一个啊,Content type。这个请求头表示提交的数据类型是吧,你看它就什么Mar part,哎,就是Mar part,我把它复制过来吧,这都有了,我就不再重复写了。好,Ma phone呢,表示提交的数据啊,以多段的形式呃,进行拼接,然后提交给服务器,每个表达项一段数据啊,那既然是多段,大家看一下就是下面这些数据了,你看。
04:09
这是一段。看到吧,这是一段,哎,然后这里呢,表示结束,那么每一段数据之间由什么来进行分割呢?大家注意看,这里还有个邦的律。你看一下哈方的瑞表示什么,每段数据的分隔符,哎,每段数据的分隔符,大家如果英语不好的话,你可以自己拿这个翻译软件看一下啊,分界线是吧,边界分隔啊好了,那么大家注意看后面这个值是它随机生成的,每次提交都会有浏览器随机生成的一个值啊,就这个值。我给你拿过来吧。哎,是由浏览器每次都什么呢?随机生成,每器都随机生成的,哎,那么它就是什么呢?每端数据的分界符啊分界符那么下面这个地方就到空行是吧?啊,因为咱们说POS请求啊,它分三段,请求行,请求头,请求体,中间呢,请求头和请求体之间有空行隔开,那么下面这些内容啊,整个就是请求体了。
05:33
然后这个请求体的数据呢,就是多段的数据,哎,多段的数据,那么这每一段数据怎么去看呢?再来看一下来看啊这个。你看见吗?这啥呀,这就是上面这个边界符,你看到吗?诶,它表示一段数据的开始。啊,它表示一段数据的开始,好,哎,然后呢,这个这一段数据什么,这就是一个表单项了,哪个单项啊,哪个表单项大家注意看。
06:11
Content disposition就是什么内容的一个描述,是吧?From就表达内容了,Name等于是name是哪一段呢?其实就是这里写的这个。用户名这个表单项name等于就是name,诶就是它,哎,然后大家注意看哈,这里呢,有一个空卡,它对这个表单项描述完了以后,它会有一个空行,空行之后呢,这一段就是什么?就是当前这个表单项的值。当前表单项的值好了,诶,这是一段数据,哎,咱们刚刚敲的就是W7968了啊啊,你可以回退看一下,你看AW168还在啊,完了以后他介绍完一个表单项了,接着下面又是另一个表单项。
07:11
大家看,还是这个分界符。啊,还是那个分界符表示,哎,另一段数据的开始,哎,开始,然后呢,下面这个地方,它又开始描述另一个表达项,就什么呀,就是这个,呃,上传的文件的这个选项,然后看到这里说他说我也是一个表达箱是吧,Form date嘛,Name等于photo,你看这里面,这不就name photo吗?上传的这个文件啊,然后。File name是什么?文件名是吧?文件名,然后这个地方contain type呢是表示上传的文件类型是啥?是个图片是吧?是个图片,然后这里还有啥就是空行,它对于文件,他对当前这个表单项啊介绍完了以后,它就会有个空函,然后空函后其实这里还有一些东西就什么呢,上传的。
08:16
文件的数据,嗯,但是为什么在这里看不见呢?因为谷歌浏览器啊,觉得你上传的文件内容很多,大家记住啊,一会我在服务器给你求证,这里呢有很多很多数据,如果直接显示在浏览器的这个调试的下面,会显得很乱,所以谷歌浏览器为了让这个数据啊好看一些,没有把这个数据内容给显示出来啊,它没有显示出来啊,那最后的这一段呢。大家注意最后的这一段,它也是这个分界符,但这个分界符呢,跟前面有些不同,哪个不同,你看在这个结尾多了两个减号,那么多了两个减号的这个分界符表示什么?
09:00
表示这个数据的结束,大家记住啊,多了两个减号的分界符或者是分隔符,表示数据的结束标记啊,就表示结束了,哎,就表示结束了是吧?好,这个呢,就是上传的HTP协议的一个介绍啊,一个介绍。我再来,我再来一次啊。好了。那么接着咱们再来看看,那么我们说提交给服务器的数据就是这些,那服务器那边怎么接收啊,咱们请看在这边。现在呢,我把它住了哈,大家注意。客户端是怎么发的,服务器就怎么接收,咱们说它是什么呀,是以流的形式。
10:00
发送给的服务器,记住了,你只能够以流的形式来接收,如果说你不以流的形式来接收,它能接收到吗?请看啊,二点咱们以前接收怎么接收request.get parater,诶,点get perter,比如说我获取算量,它能有吗?我获取photo它能有吗?大家看一下哈,如果这么写,那就什么都得不到了,来。呃,咱们重新部署一下,再亲一下。稍等一下啊,编译部署成功了,咱们看看能得到吗?以这种方式他就得不到了啊提交。看看空调打印是不是得不到啊,嗯,因为客户端是引流的形式发送的,所以呢,这边只能以的形式来进行接收,怎么接收大家看啊,点get input string。
11:00
你看你得先得到这样一个流啊,对吧,得到这样一个流,然后呢,通过这个流去读是吧,Input string read啊我这里呢,需要一个buffer的缓冲区,来我创建一下。好,我给他一个比较大的一个空间值,呃,1024够了啊,应该够了啊,咱们现在读,读完了以后这个是什么,是读了几个字节是吧,那咱们打印一下吧,Newre诶。你有词菌,我把啊这词菌我把这个字节缓冲区啊,先放进来,从零开始。读了几个呀,这是它的长度啊。
12:01
OK。这报啥错误,然后我看看啊,它的参数是什么。这个string是不是打包打错了哦,他导错包了是吧,咱把它删了啊。好,删了以后这就没错了啊,咱们看一下客户端发送过来的数据到底是什么样的内容。啊,扫描的内容来,我们在这边再来提交一次走。啊,我重启一下吧,很明显它这个打印说明什么,这个数据是不是代码还没有生效,咱们重新再部署一下。亲一下啊,重新编译啊,重新编译,稍等一下。好,这个编译部署成功了,呃,然后咱们在这边再重新提交一次,走大家来看一下哈,现在这个呢,就是咱们刚刚服务器收到的数据了,你看这个数据的格式。
13:03
这个格式是不是就是我们刚刚在这里面这一段提交的数据啊,哎,你看并且你看一下哈,这个是什么普通的表单项用户名啊,这一段呢,就上传那个文件啊,然后空行之后,这里有什么,这里一段乱七八糟的东西,就是什么上传的那些数据了,你看这个东西很乱啊,如果显示在这个控制台里面,那就显得很乱了,所以谷歌并没有把它显示出来,而是留了一个空白。啊,咱们在服务器这边是可以收到这个数据的,哎,给咱们了解一下。
我来说两句