使用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 相关文章推荐
Javascript之文件操作
Mar 07 Javascript
JS实现商品倒计时实现代码
May 03 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
jquery分割字符串的方法
Jun 24 Javascript
javascript学习小结之prototype
Dec 03 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
vue-cli之router基本使用方法详解
Oct 17 Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
Sep 03 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
一个比较不错的PHP日历类分享
2014/11/18 PHP
php获取远程文件内容的函数
2015/11/02 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python开发之函数定义实例分析
2015/11/12 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
python3实现微型的web服务器
2019/09/03 Python
Python tcp传输代码实例解析
2020/03/18 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
中文师范生自荐信
2014/01/30 职场文书
八年级语文教学反思
2014/02/11 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
大学生自我鉴定书
2014/03/24 职场文书
厨房管理计划书
2014/04/27 职场文书
捐资助学感谢信
2015/01/21 职场文书
郭明义观后感
2015/06/08 职场文书
新郎结婚感言
2015/07/31 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js