00:00
那前边呢,我们讲完了这个文件的上传,那对应的还有一个文件的下载。那文件下载我们在网上看到挺多的啊,嗯,那文件下载有几种方式,一种方式就是静态的下载,我直接一点就下载了,另外一个是就是我这个下载文件啊,需要动态生成,比方说啊,我需要这个下载所有员工的信息,员工信息在数据库里边,我需要用这个员工信息生成一个Excel文件下载。这叫动态下载,我们首先看这个静态的吧,这个静态下载的话呢,很容易我们来写一个哈,这里边我们写过说有一个这个download.jsp写一个你说C过来。
01:02
我们现在呢,先来看一个最简单的下载方式,来就静态下载,好吧,我先来写一个A,比方说呀,我想来下载一个这个TXT文档X。Onlo X y z.TXT。啊,我这块的话呢,就有一个XY y.TXT看下里面有没有内容啊。最牛逼的课程是吧?我新建一个吧,后来这个下边的话呢,我新建一个这样的一个TXT文档。啊,X y.TXT好了,我写个abcde。
02:02
写完哎,我就想通过点这个超链接,直接把这个文件下载下来,我可以怎么写啊,我可以写一个xxy z.DXP啊静态下载,我在这块的话呢,直接嗯,关联到这样的一个路径就可以看效果。我一点是不是打开了呀,那你这么点吧,右键目标另存为。这是不是就是XYZT啊,我起个名来。打开。下载完了在这儿呢。
03:05
这就成功了,就这么下载,就静态的直接什么,我直接在这块关联到这个路径就可以,这种方式是最简单的,但它有一有明显的缺点是吧,我必须怎么了,我必须在这块的话呢,指定这个路径,而且我这个文件不能够动态生成。什么叫动态生成啊,我们前面讲的是吧,我要下载数据库里边所有员工的信息,那个信息啊,是一个动态的,我可能删了一个呀,加了一改了一个呀,这个时候我先需要把这个数据库信息读出来,然后呢,放到一个Excel文件里边,然后再提供下载,所以说这个静态下载有的时候不能够满足需要,于是我们再来看一个动态下载,OK。哎。
04:05
啊,这个时候的话呢,我们download的这个index,呃,这样吧,Test。SP。来写这样的一个页面哈,大家看,我想下载这个页面。先写一个啊H4KH我怎么下载它呀,我这个的话呢,我实际上我还是写死的。我还是写死的,我想直接下载这个JSP。那但是我在这里边,我是不是可以写程序啊,比方说哎,我写一个时间,我这个时间是动态生成的,来看M。
05:01
New。哎,这个时候这个文件呢,就是一个动态的文件,那当然你可以在这里面去访问数据库,然后显示一个信息,这是一个动态的,那我如何来下载它呢。那很很显然,我直接写一个DSP,这样行吗?对呀,同学说的很对呀,你这样的话你怎么了,是不是直接访问了呀,他没下载,那同学说哎,老师你这个右键目标令存为。这行。保存看。HTML打开。好了也可以是吧,这样也可以,这样也可以保存,但是啊,哎,我们希望什么呢?我们希望我点的时候啊,是一个下载的效果,包括这个也一样哈,这个点完之后不是一个下载的效果吧,我希望我点完之后是一个下载的效果,那这个时候的话呢,就需要写一些代码了。
06:13
需要来设置一些响应的方式。大家看哈,我默认情况下,是不是我点的时候就直接连过去了呀,那现在就是我想下载的话呢,我需要来设置说out一声,诶奥一些基本信息,比方说奥数客户端通知吧,太白话了是吧,通知客户端浏览器啊。这是一个需要下载的文件,不能带,按普通的HTML的方式打开。
07:03
设置一个文件类型。实际上就是记。设置一个。响应的响应,响应的类型,这个类型是什么呢?就是文件下载那个类型叫。类型看一眼哈,我记录类经调查。叫application X download。文件下的类型它就可以,好吧,写一个说set content。好,写完。写完了,写完之后看是不是会有效果,我刷新我首先用Chrome。
08:09
我点一下。大家看这块的确是在给我搞一个什么吧,搞一个下载吧,好了我再用IE。我点一下A是不是还是直接打开了,所以说你现在这个设置的呀,还不够,就设置了一个不够,我们设置这一个是干什么呢?说哎,我告诉这个,嗯,浏览器这个类型的话呢,不再是一个普通的了,但是我还是以普通方式打开了,所以说我们还需要再设置一个小像头,再设置一个什么呢?通知客户端浏览器。
09:02
啊,需要通过手工干预的方式来这个处理这个文件不在由浏览器来库里该文件,而是耳赤交游。用户自行处理,哎,这个时候的话呢,我们也需要来设置一个。羊头设置用户自己处理的方式,设置这个用户处理的方式。响应头,响应头需要来设置一个,需要来设置一个响应头,这个响应头就是它这个名,就这个叫content decision decision它什么呀?内容的处理方式,内容decision不是处理吗?内容处理方式点一个吧,response.set。
10:12
TIgEr。这个,那这个值的话呢,告诉什么呀,Out是一个附件attachment,同时告诉你文件名字,哎,我告诉你ABC.txt这样告诉你的,好了再找。看Chrome。我点一下大家注意是不是下了一个ABC.txt啊,诶这也没有这个由用户自己处理,而是这样一个下载啊,这个可R大家用过,可R下载吧,可R下载它就这样是吧,它就是从底下找好了,下面我们再来看这个。啊,IE我刷新找一个这家咋了,是不是开迅雷了呀,我这个迅雷能不能开开看呢。
11:07
打开看一下吧,是吧,这迅雷里面是不是会有一些下载历史啥的呀。啊好了,成功好,我不上里面去看就可以了,运行。是这么一个效果吧,哎,我是可以完成这个下载的,这个时候啊,我们这个响像头就设置完了,同学说你完成下载了吗?但是我这个文件内容啊是固定的,如果要是一个二进制文件呢。那我就需要指定一个IO流就可以,但是我在这个文件下载之前,我需要来设置这样的两个前头,OK,说一下思路四文件的下载一啊准备工作。
12:11
步骤吧,步骤。一步设置。Content time。咸口。什么设置响应的类型是什么类型是什么是什么类型啊,我们通常情况下就要告诉他哈,不再是一个这个TXT了,也不再是一个这个HTML了,是一个需要下载的文件,告诉通知浏览器是一个。
13:00
下载的文件好了,这个时候这个写法的话呢,都是这么写。那拿过来。第二个步骤。这个呢,我们在那个Chrome里边好用了,摁在IE里边不行,就你告诉我这个下载的时候我就直接打开了,这个时候的话呢,我还得通知浏览器,你不要直接打开,哎,你需要这个,呃,不是用浏览器来处理是吧,而是需要这个呃,人工来处理好了,还需要来设置。向像头,咸像头一个名字叫。Content内容的处理方式。就指这个想,嗯应干什么呢?通知浏览器,通知浏览器不在,由浏览器来自行。
14:16
处理或者是打开这个呃,要下载的文件二。哦,用户手工完成好了写个吧,复制一下吧,这个。分成C为好,第三个还有一个呢,那文件是什么呀?好了,具体的文件可以怎么办?可以要用response get output stream方式以IO的。
15:10
方式发送给客户。发送给客户的客户好,就这三个步骤就可以,于是的话呢,我们再写一个完整的下来吧。Bra onload OK。当log,比方说我们写个ABCd.PPT。嗯。我要下载它,OK,这个时候的话呢,我们来写一个看一下哈,CTRLC。
16:01
拉过来。Downloadload。新建一个sorry。下一步爱的请求,这跟上传不一样吧,上传什么请求啊post,那我下载一般而言一定一定是盖,我点一个超链接它就下来了嘛,是吧,而不是表达那个按钮,一般而言都是这样的哈,盖点过来。你写吧,不知道,刚才我们已经说了,我直接写了点set。
17:03
哎,这个直接写那C一个,还有一个赛海。这个hi这块吧,稍微有点讲究,你这个文件名是不可能是动态的呀,于是我来写一个哈,看string file him等于哎,我们来写一个,比方说这个这个这个文件下载文件。下载RPPD好了,这个时候的话呢,我对这个文件下载啊,需要给它编下码,URL hold,填file name uf杠八。
18:09
这个就是摁的次数太多了是吧,Ecl也会崩溃。好了,后后面还有一个括号。写完好了,下面我来写一个输出流。Out putream out等于不是new啊,奇怪了点,Get outam,输出吗?好,我需要定位到一个文件。这个文件呢,我就用这个文件了哈。
19:01
CTRLC过来。DA。这个知道也是PPT吧。喂。建明。复制。写完这个文件搞到,那我需要Y1流怎么写啊,先读进来,然后整出去吧,先搞一个input。
20:09
好了,然后就是我们那个AO整个的这个过程,As buffer等于new as。1024等于0WHILE循环。N等于in,点读到包括里边来,如果这个值不等于负一的话,我就out.right。BUFFER0到Li读完之后,我可以把in给关掉,但是关不了。二是什么呀,二是不是给用户的呀,OK,找一个。
21:04
嗯。启动啊启动。刷新走,大家看是不是文件下载者PPT啊。嗯,没问题哈,好打开。打开是是哪个PPT啊,听听器这个吧,我复制的吗?这个过了好了再看这个。刷新走。立即。等一下啊。
22:05
运行。是吧,这样这个文件下载就O了,这个步骤的话呢,还是比较简单的步骤就在这not。首先设置一个content通知浏览器,这是一个下载文件。这个时候对于这个Chrome而言已经好用了,但对于IE不行,你还得告诉IE一声,告告浏览器一声是吧,这个你不你不要自己处理了,你要给用户去处理,比方说用户可以选择使用迅雷啊,还是什么还是什么样的方式,然后的话呢,后边再具体的使用IO浏览写就可以,我们搞搞一下啊看用IO流写这个代码。大致上就是这样。
23:02
目前一种。这就是文件下载好这个文件下载这个基本知识点,讲完之后的话呢,我们再回到我们这个里边来,大家看一下这个。这个啊,我们只是完成了这个文件的上传,这个下载呢,没写完,但大家可以自己给它完成,关了啊,这关了。好。首先我把这个里边这个。关掉,不要。不是这个这个复制用它用它来看。
24:07
好,首先呢,我完成上传。十一来。A。12来看着哈提交。成功看一下上传成功数据库。OK,好了,然后下载资源,我首先干什么呀?我首先来一个页面上边把我要我能够下载这个文件列表啊列出来,这很明显需要通过一个吧,需要去读数据库啊,文件名DC,文件名DC这个信息来源于数据库,我点任何一个我都可以完成这个文件的下载,看见了吧,就是我们上午的功能完成一半,这个的话呢,大家后续的再给他。
25:09
完成,我们把这个需求给大家写上。那来。文件下载的需求,第一个说在文件上传成功后,Success点页面。你看这个时候的话呢,上传成功之后。Success提供一个下载资源的超链接提供。一个下载资源的。
26:05
超链接好了,二来点击下载资源的超链接怎么样啊,会。把请求,把请求发送发送到,然后呢,读取数据库,然后在页面上显示可以下载的资源信息。那这个时候的话呢,我这个页面就是这么显示的哦,我这里边应该是没有缓存哈,你看。又多了一个下载,我这边没有缓存,这个不要紧啊,好了,大家写这个信用的话呢,不会有我这个问题,那我来把这个复制一份,看看都有什么东西来复制。
27:14
长这样好了,然后呢,点击下载。带。点击下载即可。完成对应文件的下载这个需求好了,那我这个我点这个下载的话,同学会想是吧,我能直接关联到那个文件吗。关联不到,为什么呀,我现在的我我这个文件我是不是放在哪了,我是不是放在这个外部音符下了,这个文件我直接访问不了是吧,你只能通过程序的方式进行下载,所以说整个需求,然后的话呢,我这个文件下载这个基本的这个技术点的话呢,也讲完了,大家把这个也也来实现一下,到此关于文件上传下来的内容就刷了。
我来说两句