使用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 相关文章推荐
基于jQuery试卷自动排版系统
Jul 18 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
Bootstrap使用基础教程详解
Sep 05 Javascript
Javascript动画效果(4)
Oct 11 Javascript
js实现功能比较全面的全选和多选
Mar 02 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
three.js实现圆柱体
Dec 30 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
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 空格,换行,跳格使用说明
2009/12/18 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
优化javascript的执行速度
2010/01/23 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
Python Map 函数的使用
2020/08/28 Python
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
优秀的导游求职信范文
2014/04/06 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
青年教师个人总结
2015/02/11 职场文书
慰问信范文
2015/02/14 职场文书
世界气象日活动总结
2015/02/27 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技