使用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 自动完成脚本整理(33个)
Oct 20 Javascript
Javascript 中的类和闭包
Jan 08 Javascript
跟着JQuery API学Jquery 之三 筛选
Apr 09 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
Aug 26 Javascript
JS代码实现table数据分页效果
May 26 Javascript
JS生成一维码(条形码)功能示例
Jan 19 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
vue-quill-editor实现图片上传功能
Aug 08 Javascript
微信小程序template模版的使用方法
Apr 13 Javascript
vue实现条件叠加搜索的解决方法
May 28 Javascript
js表达式与运算符简单操作示例
Feb 15 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
php获取域名的google收录示例
2014/03/24 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
javascript的this关键字详解
2019/05/20 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
深入理解Javascript中的this关键字
2015/03/27 Python
用Python实现KNN分类算法
2017/12/22 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
Python函数生成器原理及使用详解
2020/03/12 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
智能旅行箱:Horizn Studios
2018/04/30 全球购物
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android