使用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 18 Javascript
jQuery中的编程范式详解
Dec 15 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
Jun 16 Javascript
Javascript实现获取及设置光标位置的方法
Jul 21 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
Mar 02 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 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
5.PHP的其他功能
2006/10/09 PHP
用户的详细注册和判断
2006/10/09 PHP
php4的session功能评述(三)
2006/10/09 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
javascript版2048小游戏
2015/03/18 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
Python迭代器与生成器基本用法分析
2018/07/26 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
什么是唯一索引
2015/07/05 面试题
播音主持专业个人自我评价
2014/01/09 职场文书
2015年采购工作总结
2015/04/10 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
js不常见操作运算符总结
2021/11/20 Javascript