使用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重新播放css动画所遇问题解决
Aug 21 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
js清空form表单中的内容示例
May 20 Javascript
判断日期是否能跨月查询的js代码
Jul 25 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
Apr 14 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
react.js 获取真实的DOM节点实例(必看)
Apr 17 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
Nov 21 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 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
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
angularjs 页面自适应高度的方法
2018/01/17 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
浅谈Python单向链表的实现
2015/12/24 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
django初始化数据库的实例
2018/05/27 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python 导入数据及作图的实现
2019/12/03 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
应届生.NET方向面试题
2015/05/23 面试题
Java编程面试题
2016/04/04 面试题
函授生自我鉴定
2014/03/25 职场文书
简历自我评价优缺点
2015/03/11 职场文书
开国大典观后感
2015/06/04 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Vue实现下拉加载更多
2021/05/09 Vue.js
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL