使用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实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
underscore之Collections_动力节点Java学院整理
Jul 10 Javascript
vue Render中slots的使用的实例代码
Jul 19 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
微信小程序云函数使用mysql数据库过程详解
Aug 07 Javascript
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
ant design vue嵌套表格及表格内部编辑的用法说明
Oct 28 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
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
深入理解Webpack 中路径的配置
2017/06/17 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
Python contextlib模块使用示例
2015/02/18 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
代码分析Python地图坐标转换
2018/02/08 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
Python关于反射的实例代码分享
2020/02/20 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
毕业自荐信
2013/12/16 职场文书
生活小常识广播稿
2014/09/16 职场文书
十岁生日答谢词
2015/01/05 职场文书
教师节大会主持词
2015/07/06 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js