java、javascript实现附件下载示例


Posted in Javascript onAugust 14, 2014

在web开发中,经常需要开发“下载”这一模块,以下给出一个简单的例子。

在服务器端,使用java开发:

@RequestMapping(value = "download.html", method = RequestMethod.GET) 
public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { 
response.setContentType("charset=UTF-8"); 
File file = new File(path); 
response.setHeader("Content-Disposition", "attachment; filename=a"); 
BufferedInputStream bis = null; 
BufferedOutputStream bos = null; 
OutputStream fos = null; 
InputStream fis = null; 
try { 
fis = new FileInputStream(file.getAbsolutePath()); 
bis = new BufferedInputStream(fis); 
fos = response.getOutputStream(); 
bos = new BufferedOutputStream(fos); 
int bytesRead = 0; 
byte[] buffer = new byte[5 * 1024]; 
while ((bytesRead = bis.read(buffer)) != -1) { 
bos.write(buffer, 0, bytesRead); 
} 
bos.flush(); 
}catch(E e){ 
}finally { 
try { 
bis.close(); 
bos.close(); 
fos.close(); 
fis.close(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 
}

当我们在前端请求这个地址时,服务器先找出文件,设置响应头,然后通过流输出到浏览器端。

浏览器在头中发现该响应的主体是流文件,则自动会调用另存为的窗口,让用户保存下载。

这里有个关键就是Content-Disposition这个头属性,Content-Disposition是MIME协议的扩展,用于指示如何让客户端显示附件的文件。

它可以设置为两个值:

inline //在线打开

attachment //作为附件下载

这里我们设置的值为attachment,所以可以被识别为附件并下载。

上面讲了如何写服务器端,下面讲前端如何请求。

前端请求有三种方式:

1.Form

<form action='download.html' method='post'> 
<input type='submit'/> 
</form>

2.iframe

var iframe = "<iframe style='display:none' src='download.html'></iframe>" 
body.append(iframe);

​当iframe被append到body中时,会自动请求下载链接。

3.open

window.open("download.html");
Javascript 相关文章推荐
需要做特殊处理的DOM元素属性的访问
Nov 05 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
js倒计时小程序
Nov 05 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
js实现获取焦点后光标在字符串后
Sep 17 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
jQuery中(function($){})(jQuery)详解
Jul 15 Javascript
深入理解jQuery事件绑定
Jun 02 Javascript
详解Vue中watch的高级用法
May 02 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
May 22 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
js怎么判断flash swf文件是否加载完毕
Aug 14 #Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
Aug 14 #Javascript
JQuery Tips相关(1)----关于$.Ready()
Aug 14 #Javascript
javascript实现获取cookie过期时间的变通方法
Aug 14 #Javascript
javascript检查浏览器是否支持flash的实现代码
Aug 14 #Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 #Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 #Javascript
You might like
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python 装饰器使用详解
2017/07/29 Python
Python简单读取json文件功能示例
2017/11/30 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
Python OpenCV之常用滤波器使用详解
2022/04/07 Python