JavaWeb 两种方式文件下载

转载:https://blog.csdn.net/qq_38320255/article/details/81214263

参考:https://www.cnblogs.com/xdp-gacl/p/4200090.html

以下是关于,如何设置从服务器进行文件下载。有两种方法:1.a标签下载 2.Servlet下载。

a标签事实上不需要部署Servlet,只需要告诉它文件所在位置即可。不过缺点是,浏览器会自动解析文件内容。如:如果是txt文档或图片,浏览器会自动打开,而不是以附件的形式进行下载。而zip等浏览器无法打开时,才会以下载的方法,让你进行处理。

操作如下:

1.我们先在eclipse中创建一个动态网页工程。起名为DownLoadTest。然后在WebContent中创建一个index.htmt网页。该网页则为我们启动服务器时默认打开的网页。而我们以a标签形式下载文件的代码也在其中编写。

2.我们在WebContent中创建一个download文件夹,并将要下载的文件放在其中。

3.接着就可以在index.html中编写a标签了,如下:

4.事实上,这样一个以a标签形式的文件下载就完成了。注意a标签中href的路径。像第一个:它的在当前应用,也就是我们创建的DownLoadTest下的download文件夹中的123.txt.而这正是我们123.txt的位置。所以这个a标签的路径就是指向的123.txt。其他两个也是同样的。这时候,我们运行该应用。并在浏览器中打开网址可以看到如下:

 

我们点击123.txt,就会在浏览器中直接打开

而我们点击123.zip,就会在浏览器下方提示,是否下载:

以上就是a标签下载。

 

2.以Servlet方式进行文件下载。

以Servlet形式下载则可以设置以附件的形式下载。这样浏览器就不会解析,并打开。

操作如下:

1.首先,我们要创建一个Servlet,起名为DownLoad

2.然后我们在index.html中设置以Servlet形式下载:

其中herf中的路径,指向的是我们是Servlet(DownLoad),而后面的filename是我们传入Sevlet的参数,因为我们要以Servlet方式下载,所以我们必须告诉Servlet,我们要下载的是哪个文件。之后我们便可以设置Servlet了。

这时我们运行,它便是以Servlet形式进行文件下载的了。

然而出现了两个问题:1.当我们点击123.txt时,它仍是在浏览器中打开。

              原因:是因为我们没有设置以附件的形式下载。

2.当我们点击123.zip时,它是提示下载了,但名称错误,而且没有下载类型。

             原因:我们没有设置响应的mimetype。

我们在代码中进行添加:

这时我们重新打开index.html,并点击下载。会发现123.txt不再是在浏览器中打开,而是提示你下载

并且他还显示后缀.txt形式。我们点击123.zip也是同样:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>'s page</title> <link href ="gogo.css" type="text/css" rel ="stylesheet"/> </head> <body> <div id="A"> <center> <h1 id="B"><b><tt>'s page</tt></b></h1> </center> <ul> <li><a href="#about" class="scroll">About me</a></li> <li><a href="#home" class="scroll">Hometown</a></li> <li><a href="#favorite" class="scroll">Favorite</a></li> <li><a href="#contact" class="scroll">Contact</a></li> </ul> <br/> </div> <div class="homepage" id="homepage"> <center><h1>Hello,I am Gogo.</h1></center> <center> <ul class="information"> <li></li> <li></li> <li></li> </ul></center> </div> <div class="about" id="about"> <img alt="gogo.jpg" src="img/gogo.jpg" align="right" height="450px" width="350px"></img> <h2>About me:</h2> <table> <tr bgcolor="#00FFFF"> <td colspan="3">Profession</td> </tr> <trbgcolor="#00FFFF"> <td bgcolor="#00FFFF">C</td> <td bgcolor="#00FFFF">C++</td> <td bgcolor="#00FFFF">C#</td> </tr> <tr bgcolor="#00FFFF"> <td colspan="3">SQL</td> </tr> <tr bgcolor="#00FFFF"> <td colspan="3">HTML</td> </tr> </table> </div> <div class="home" id="home"> <ul class="changde"> <li><img src="img/Changde-1.jpeg" align="right" height="200px" width="300px"></img></li> <li><img src="img/Changde-3.jpeg" align="right" height="200px" width="300px"></img></li> <br/> <li><img src="img/Changde-4.jpg" align="right" height="200px" width="300px"></img></li> <li><img src="img/Changde-5.jpeg" align="right" height="200px" width="300px"></img></li> <br/> <li><img src="img/Changde-2.jpg" align="right" height="200px" width="300px"></img></li> <li><img src="img/Changde-6.jpeg" align="right" height="200px" width="300px"></img></li> </ul> <h2>Hometown:<a href="http://eng.changde.gov.cn" target="_blank">Changde</a></h2> <iframe src="http://f.amap.com/nuXR_0E65UPN" height="400px" width="600px"></iframe> <p> </p> </div> <div class="favorite" id="favorite"> <h2>Favorite:</h2> <h3>My idol:<a href="https://syndicasian.com/nct-jaehyun-member-profile-and-facts/" target="_blank">JaeHyun</a></h3> <iframe src="//player.bilibili.com/player.html?aid=33861895&cid=59295951&page=1" scrolling="no" align="right" border="0" frameborder="no" framespacing="0" allowfullscreen="true" height="300px" width="500px"></iframe> <img src="img/Jaehyun-2.jpg" height="490px" width="370px"></img> <img src="img/Jaehyun-3.jpeg" height="490px" width="370px"></img> </div> <div class="contact" id="contact"> <h2>Contact:</h2> <p> <center class="wayt"> <a href=""></a> <br/> <form> <button><a href="index.html">Again</a></button> </form> </center> </p> </div> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值