JQuery 实现文件下载的常用方法分析


Posted in jQuery onOctober 29, 2019

本文实例讲述了JQuery 实现文件下载的常用方法。分享给大家供大家参考,具体如下:

GET方式

window.location.href = url;

POST方式

var url = "下载接口地址";
// 构造隐藏的form表单
var $form = $("<form id='download' class='hidden' method='post'></form>");
$form.attr("url",url);
$(body).append($form);
// 添加提交参数
var $input1 = $("<input name='param1' type='text'></input>");
$input1.attr("value","参数值1");
$("#download").append($input1);
var $input2 = $("<input name='param2' type='text'></input>");
$input1.attr("value","参数值2");
$("#download").append($input2);
// 提交表单
$form.submit();

ajax为什么不能下载文件

JQuery 实现文件下载的常用方法分析

ajax支持的服务器返回数据类型有:xml、json、script、html,其他类型(例如二进制流)将被作为String返回,无法触发浏览器的下载处理机制和程序。

// ajax将返回数据转换为string,再利用该string创建Blob对象,下载的文件无法正确打开,数据可能已经被破坏
var blob = new Blob([data]);
//对于Blob对象,我们可以创建出一个URL来访问它。使用URL对象的createObjectURL方法。
var a = document.createElement('a');
a.download = 'data.doc';
a.href=window.URL.createObjectURL(blob);
a.click()

HTML5 Blob对象

一直以来,JS都没有比较好的可以直接处理二进制的方法。而Blob的存在,允许我们可以通过JS直接操作二进制数据。Blob对象可以看做是存放二进制数据的容器。

创建Blob对象

var blob = new Blob(dataArr:Array<any>, opt:{type:string,endings:string});
  • dataArr:数组,包含了要添加到Blob对象中的数据。数据可以是任意多个ArrayBuffer,ArrayBufferView, Blob,或者 DOMString对象。
  • opt:对象,包含两个属性
    • type:用于设置Blob对象的属性(如:MIME类型)
    • endings :(已废弃),设置BlobBuilder.append() 方法的endings参数,取值"transparent"或"native"
// 例如创建一个装填DOMString对象的Blob对象
var data='<b style="font-size:32px;color:red;">Blob</b>';  
var blob=new Blob([data],{"type":"text/html"});  
console.log(blob);

xmlhttprequest 2 + Blob 实现文件下载

xmlhttprequest 2 标准支持流文件,使用 xhr.response作为返回(不是responseText)

var url = "";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//get请求,请求地址,是否异步
xhr.responseType = "blob";  // 返回类型blob
xhr.onload = function () {// 请求完成处理函数
 if (this.status === 200) {
 var blob = this.response;// 获取返回值
 var a = document.createElement('a');
 a.download = 'data.doc';
 a.href=window.URL.createObjectURL(blob);
 a.click();
  }
};
// 发送ajax请求
xhr.send();

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery获取table下某一行某一列的值实现代码
Apr 07 jQuery
JQuery实现定时刷新功能代码
May 09 jQuery
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
jquery实现选项卡切换代码实例
May 14 jQuery
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
jQuery实现图片随机切换、抽奖功能(实例代码)
Oct 23 jQuery
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 #jQuery
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 #jQuery
jquery实现购物车基本功能
Oct 25 #jQuery
使用jQuery实现掷骰子游戏
Oct 24 #jQuery
jquery实现掷骰子小游戏
Oct 24 #jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 #jQuery
jQuery实现轮播图源码
Oct 23 #jQuery
You might like
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Django框架模板的使用方法示例
2019/05/25 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Python安装Bs4的多种方法
2020/11/28 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
水污染治理专业毕业生推荐信
2013/11/14 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
京剧自荐信
2014/01/26 职场文书
初中家长寄语
2014/04/02 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书