使用JS代码实现点击按钮下载文件


Posted in Javascript onNovember 12, 2016

正文

有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方法:

现在需要在页面上添加一个下载按钮,点击按钮下载文件。

题外话,这个下载图标是引用的 font-awesome 上面的。使用时,首先将 font-awesome 整个文件夹下载下来,利用bower或者是自己去官网上面下载都行。

将整个文件夹放在项目文件中之后,在页面上面引入css文件

<link href="libs/font-awesome-4.7.0/css/font-awesome.min.css" type="text/css" rel="stylesheet">

在页面上可以开始使用所需要的图标了

<i class="fa fa-download" aria-hidden="true" title="下载"></i>

1.下载项目中的文件

如果要下载的是一个excel文件模板,可以先将该文件放在项目文件夹下面,然后在页面下载按钮上加上onclick事件:

<i class="fa fa-download" aria-hidden="true" title="下载" onclick="window.open('file/user.xlsx')"></i>

这样在点击图标之后,文件就会自动下载了。

2.发送请求地址下载文件

JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。

1)get请求

$('.download').click(function () {
var tt = new Date().getTime();
var url = 'http://192.168.1.231:8080/91survey/ws/excel/download';
/**
* 使用form表单来发送请求
* 1.method属性用来设置请求的类型——post还是get
* 2.action属性用来设置请求路径。
* 
*/
var form=$("<form>");//定义一个form表单
form.attr("style","display:none");
form.attr("target","");
form.attr("method","get"); //请求类型
form.attr("action",url); //请求地址
$("body").append(form);//将表单放置在web中
/**
* input标签主要用来传递请求所需的参数:
*
* 1.name属性是传递请求所需的参数名.
* 2.value属性是传递请求所需的参数值.
*
* 3.当为get类型时,请求所需的参数用input标签来传递,直接写在URL后面是无效的。
* 4.当为post类型时,queryString参数直接写在URL后面,formData参数则用input标签传递
* 有多少数据则使用多少input标签
*

 */
var input1=$("<input>");
input1.attr("type","hidden");
input1.attr("name","tt");
input1.attr("value",tt);
form.append(input1);
var input2=$("<input>");
input2.attr("type","hidden");
input2.attr("name","companyId");
input2.attr("value",companyId);
form.append(input2);
form.submit();//表单提交
})

2)post请求

$('.download').click(function(){
var tt =newDate().getTime();
var url = restUrl +'/excel/download?userId='+ userId;
var form=$("<form>");//定义一个form表单
form.attr("style","display:none");
form.attr("target","");
form.attr("method","post");//请求类型
form.attr("action",url);//请求地址
$("body").append(form);//将表单放置在web中
var input1=$("<input>");
input1.attr("type","hidden");
input1.attr("name","tt");
input1.attr("value",tt);
form.append(input1);
var input2=$("<input>");
input2.attr("type","hidden");
input2.attr("name","companyId");
input2.attr("value",companyId);
form.append(input2);
form.submit();//表单提交
});

完成后,在页面上面点击下载图标,文件就会自动下载了。

Javascript 相关文章推荐
jquery 指南/入门基础
Nov 30 Javascript
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
JavaScript实现的in_array函数
Aug 27 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 Javascript
理解JavaScript表单的基础知识
Jan 25 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
深入解读VUE中的异步渲染的实现
Jun 19 Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 Javascript
JS中箭头函数与this的写法和理解
Jan 14 Javascript
JavaScript中浅讲ajax图文详解
Nov 11 #Javascript
javascript 实现动态侧边栏实例详解
Nov 11 #Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
Nov 11 #Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 #Javascript
JSON与XML的区别对比及案例应用
Nov 11 #Javascript
浅谈AngularJS中ng-class的使用方法
Nov 11 #Javascript
JS中数组重排序方法
Nov 11 #Javascript
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
功能强大的php文件上传类
2016/08/29 PHP
php封装一个异常的处理类
2017/06/08 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
python快速查找算法应用实例
2014/09/26 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
喜之郎果冻广告词
2014/03/20 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
计算机实训心得体会
2016/01/14 职场文书