使用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 相关文章推荐
兼容IE和FF的js脚本代码小结(比较常用)
Dec 06 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
jQuery解析Json实例详解
Nov 24 Javascript
Bootstrap每天必学之导航组件
Apr 25 Javascript
jQuery插件pagination实现无刷新分页
May 21 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
Apr 24 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
Vue实现验证码功能
Dec 03 Javascript
js实现聊天对话框
Feb 08 Javascript
vue使用Sass时报错问题的解决方法
Oct 14 Javascript
JavaScript实现班级抽签小程序
May 19 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
php 购物车的例子
2009/05/04 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
javascript数组去掉重复
2011/05/12 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Python re模块介绍
2014/11/30 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
python实现linux下抓包并存库功能
2018/07/18 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
外语专业毕业生个人的自荐信
2013/11/19 职场文书
代领报检证委托书范本
2014/10/11 职场文书
党员个人总结范文
2015/02/14 职场文书
终止劳动合同通知书
2015/04/16 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript
vscode内网访问服务器的方法
2022/06/28 Servers