00:00
那么怎么样?使我们的服务端掌握着客户端下载到的文件是以附件的形式出现的,这个主动权呢?那么下面我们就来写这个程序,当然写这个程序的时候啊,需要大家。呃,知道啊,我们这里边儿主要得修改。一个响应的头部,头部属性,我们拷贝它啊。零九。这里边儿这东西都不要了。
01:03
我们这个就叫index page了啊,诶不能不能index page下载呀,下载肯定还得是个超链接,但这个超链接啊这样。这超链接不是直接这样写的了,是提交给一个solve,我们这个就叫download solid。我指定个文件,这个比如说。啊,下载什么。图片,我们就说图片。跑车,以他为例吧,可以吧。那现在我们就来写这样一个。
02:02
Com点北京。Power no.SOS。Down a lot solid。啊,那当然是。Get提交是吧。好,刚才我们说了啊,如果说要让客户端下载到的是以附件的形式,下载到的文件是以附件的形式出现的,那么我们需要修改。响应的。头部属性,一个是头部属性啊,修改响应的。
03:07
头部属性谁?Content。啪。They。修改它的头部属性值。为什么?为附件attachment。这不响应的吗?哎,瑞bos点。Set header。Set。还的。谁的,刚才不是说了吗,就他。就他看。CTRL非。
04:00
它的值是什么,Attachment?Attachment,诶,修改这个值OK了。这样的话,他就能以以什么以这个。附件的形式。Attachment的意思啊,是附件,以附件的形式出现了,当然这里边儿需要有流啊,你现在就要用IO流来实现了。那我的输入流,我得把这个这个服务端的这个资源呢,是吧,这个资源。输物流资源得读到,把这这资源读到我服务端的内存是不是,所以这是要用输物流的啊,This get。So。Contest里边有个get。
05:03
啊,Get什么?Get。我看看啊,我记不清这个API了。对,Get resource as stream,就它了。Get resource as STEM。这是个什么?这是个输入流input,当然哪个资源,我们现在下载这个aa.jpg这个资源啊,那所以这要写什么resources下边的aaa.JPG。
06:04
这是获取连接。啊,连接服务端。资源文件到。输流,有了输流,还得有输出流啊。输出流,那那好说啊,Response get writer这个标准输出流,我们不能用它标准输出流直接就写到浏览器了。那用谁呢?OS。这是。获取。输出流。紧接着。我要把输入流里边的数据怎么样复制到输出流里边,修到输出流,将输入流中的数据写入到输出流中,那这个又是固定格式了是吧,这个简单。
07:20
负一吧,是吧,再来个八分。八分我留一个1024是吧,有一个半数组。啊啊。然后Y是吧,只要它不等于负一就没结束啊就干嘛。Let。s.buffer。
08:03
OK。这是OS点。Buffer。从零开始论长度是吧,这个写完了,写完以后关闭流。os.close is.ok就这了。完成了。我们现在这个程序已经完成了,现在又可以跑了。来吧。诶,我们看看我现在点了啊包车走。看看没问题吧。对不对。
09:00
那现在这弹出另存框了,不过文件名你注意文件类型是什么,点CBG的,这文件名怎么是这个东西啊。先保存一下。你看就这个。就这个我们这样啊,我给它加个点JPG。你看。数据是都过来了,现在就是文件名出问题了是不是。这个问题怎么解决好?解决给他后边添加attachment,后边加上file name。大于什么?你给个文件名儿呗。那个文件名。叫什么?你或者你你不用管它叫什么是吧,因为这服务端的你想提供给他想提供给。客户端让他显示什么名,比如我让他显示叉叉叉点2JPG可以吧。
10:09
重启。刷新,看好走。是不是叉22G不G。保山。没问题吧?OK了。这就OK了。那么这就是我们说的文件。下载。不过啊,这里边儿。叉叉,叉叉这脾气很不好,我能不能给他这样?这个叫超跑,超跑点击飞机。哎,这个行不行呢。
11:00
好,重新发布了。刷新。看到没?这是什么乱码?出现乱码了,所以这个要解决乱码问题,怎么解决,我们需要把它专门给拿出来。这来一个。PH。去name,哎,叫什么超跑点JBT。现在出现乱码了,我们要解决这个乱码问题,怎么解决,还是我们说的那两步。一个是。打伞,一个是组装。
12:04
打散file name点。Get bit。那么这个打伞的时候,我们说过按什么,按当前的字符编码进行打散啊,打散按当前的。字符编码进行打散,当前的是什么含中文呢?因为F杠八吗?那组装呢?组装的。他组装,我组装要组装什么。你注意啊,我们这个是发送给客户端浏览器的,客户端浏览器它只认什么ISO8859杠幺。
13:06
所以我们现在打伞是按照U杠八打伞,然后我们组装的时候要按照目按目标。字符编码进行组装,我们的目标是ISO889杠幺。那么发送给。浏览器以后浏览器。会再按照浏览器。这里边儿它的。浏览器本身,你在这儿设置了这个编码啊,这个编码那么再进行。解码,所以啊,这里边儿我们现在的目标是什么?是ISO8859杠幺,那也就是说file name,我就等于我new一个ISO。
14:03
8859杠幺。看一下现在乱码问题解决了没有?刷新。超跑点接气没问题吧,为什么我说了咱们的这个。浏览器啊,不是咱们的这个浏览器,是浏览器,这是IP协议所规定的啊,浏览器里边。他只能接收。只能接收这种,只识别这种ISO8859杠幺这种自。结。数据,他只能接受这种字节数据。而我们发过来的UTF杠八。
15:03
这字符型的。那他是不识别的。所以我们需要给它变成它识别的ISO889杠幺,可是你发给他了,他他ISO859杠幺,它这这乱码,它会出乱码呀,没关系。我们的浏览器还会按照他。自己的这个。编码对,你发过来这个ISO8891。再进行解码。他自己的是什么,在哪确定的,在哪指定的,在这指定的呀,你看你这指定它是什么U杠八的呀,当前这个页面是U杠八的呀,那从这来看的话,就是它就是它。呃。字母变嘛,Unicode嘛,对不对,我们也可以这样换一个。换个浏览器换成它。
16:06
你看着。没问题吧,抄跑点记不记是不是,那我们看看它的编码。Uf杠八没问题吧,对不对,他是你把数据发送给客户端了,把什么数据。把这个。ISO889杠幺的数据发送给。浏览器的客户端浏览器了,浏览器拿到它以后,会再一次按照他自己的。说他自己的这个编码,对当前页面自己的一个编码再进行解码,那就没问题了,原本我们就是U杠八的嘛,对不对就OK了,这就是我们说的文件。下载很简单,文件下载主要这里边儿主要的知识点谁这儿。
17:05
和中文乱码问题。嗯,这些都是基本的东西啊啊不用多说了,OK了,那么文件下载就说到这里。
我来说两句