web下载文件夹
1、文件下载有两种方式:一种是超链接,一种是Servlet提供下载。
2、超链接下载时:当文件可以在网页直接打开时,会直接打开文件,而不是下载,当文件打开不了时,会提供下载窗口。
3、超链接下载原理
4、Servlet下载文件的原理

5、代码示例
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getParameter("filename"); //1 获取要下载的文件名
// 2 把文件所在的文件夹相对路径转成绝对路径
String folderPath = this.getServletContext().getRealPath("download");
// 3获得输入流用来将服务器上的文件读出
InputStream is = new FileInputStream(folderPath+"/"+filename);
// 4向相应的头部添加信息,作用是用来弹出保存文件的对话框
//response.setHeader("Content-Disposition", "attachment;filename="+filename);
// 中文文件名下载对话框中将是乱码。处理方式:IE浏览器和其他浏览器的处理方式不同
//IE:
//response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename, "UTF-8"));
//FireFox
String newFilename = new String(filename.getBytes("UTF-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+newFilename);
// 5写到本地磁盘上
OutputStream os = response.getOutputStream();
int len=0;
byte[] b = new byte[1024];
while((len=is.read(b))!=-1){
os.write(b,0, len);
}
is.close();
os.close();
}
}
详细配置信息可以查看我写的这篇文章:http://blog.ncmem.com/wordpress/2019/09/04/%e7%bd%91%e9%a1%b5%e4%b8%ad%e6%98%af%e5%90%a6%e8%83%bd%e5%ae%9e%e7%8e%b0%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6%e5%a4%b9%ef%bc%9f/
web下载文件夹的更多相关文章
- c#+web下载文件夹
最近公司在做工程项目,实现文件夹下载. 网上找了很久,发现网上的代码都有相似的问题,不过最终还是让我找到了一个符合的项目. 工程: 进行项目文件夹下载功能分析,弄清楚文件夹下载的原理,提供的数据支持. ...
- web+下载文件夹
文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端. "> <m ...
- web开发下载文件夹
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 ...
- 用 requests 模块从 Web 下载文件
用 requests 模块从 Web 下载文件 requests 模块让你很容易从 Web 下载文件,不必担心一些复杂的问题,诸如网络错误.连接问题和数据压缩.requests 模块不是 Python ...
- C#获取windows 10的下载文件夹路径
Windows没有为“下载”文件夹定义CSIDL,并且通过Environment.SpecialFolder枚举无法使用它. 但是,新的Vista 知名文件夹 API确实使用ID定义它FOLDERID ...
- 从Linux服务器下载文件夹到本地
从Linux服务器下载文件夹到本地 1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文 ...
- asp.net web开发——文件夹的上传和下载
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- php web开发——文件夹的上传和下载
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
- Java web开发——文件夹的上传和下载
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
随机推荐
- MySQL各种函数/语法
@limit pos,len select * from table limit 5,10 只显示查出结果的6-15行 ---------------------------------------- ...
- 原生js实现选中所有的checkbox
<div class="con"> <input name='多选项名称' type='checkbox' value='' id="all" ...
- SheetJS js-xlsx 的使用, exceljs
js-xlsx 官方文档:https://sheetjs.gitbooks.io/docs/#sheetjs-js-xlsx npm xlsx地址:https://www.npmjs.com/pack ...
- 暴力破解-H3C路由器-MSR900
作者:zptxwd@gmail.com 最后修改日期2017年5月10日 转载请保留出处 声明,本文仅用于技术交流和学习,不得用于任何商业用途及违法行为. 所暴力破解的设备信息 华三路由器 ...
- Go语言中byte类型和rune类型(五)
本篇内容本来准备在上一篇写的,想了想还是拆开写. go语言中字符串需要使用用双引号,而单引号用来表示单个的字符,字符也是组成字符串的元素.go语言的字符有两种: uint8类型,或者叫 byte 型, ...
- mknod创建设备(加载新的设备驱动时候,通常会用到此命令)
mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是- ...
- import和from.…import…
import和from.-import- 在讲之前我们先来讲一下怎样去下载第三方库,我们把python看作一部手机,pip就是应用管家,第三方库里面的模块就是应用管家里面的一个应用 一.import模 ...
- Mysql 事件记录 | performance_schema全方位介绍
Mysql 事件记录 | performance_schema全方位介绍 | 导语 在上一篇 初相识|performance_schema全方位介绍 中,我们详细介绍了performance_sche ...
- 根据ip获取地理信息.php
根据ip获取地理信息.php <?php function getIPLoc_sina($queryIP){ $url = 'http://int.dpool.sina.com.cn/iploo ...
- vue-router的query和params的区别
vue-router的query和params的区别 首先简单来说明一下$router和$route的区别 $router为VueRouter实例,想要导航到不同url,则使用$router.push ...