转载: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也是同样: