使用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各种复制代码收集
Sep 20 Javascript
javascript优先加载笔记代码
Sep 30 Javascript
Javascript计算时间差的函数分享
Jul 04 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 Javascript
深入理解bootstrap框架之第二章整体架构
Oct 09 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
Dec 21 Javascript
基于Vue开发数字输入框组件
Dec 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
PHP函数超时处理方法
2016/02/14 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
Django缓存系统实现过程解析
2019/08/02 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
村党支部公开承诺书
2014/05/29 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
事业单位年度考核评语
2014/12/31 职场文书
营业员岗位职责范本
2015/04/14 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android
Python中的socket网络模块介绍
2022/07/23 Python