使用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 相关文章推荐
firefox浏览器不支持innerText的解决方法
Aug 07 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
javascript 寻找错误方法整理
Jun 15 Javascript
JS控制伪元素的方法汇总
Apr 06 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
Sep 19 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
微信小程序实现收藏与取消收藏切换图片功能
Aug 03 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
Sep 14 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
Dec 02 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
Dec 18 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 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相当简单的分页类
2008/10/02 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
Python实现保证只能运行一个脚本实例
2015/06/24 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
python实现简单坦克大战
2020/03/27 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
python Paramiko使用示例
2020/09/21 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
自我评价如何写好?
2014/01/05 职场文书
员工培训邀请函
2014/01/11 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
老师的检讨书
2014/02/23 职场文书
考核工作实施方案
2014/03/30 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
医院合作意向书范本
2015/05/08 职场文书
计划生育目标责任书
2015/05/09 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技