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实现的背景颜色渐变动画效果示例
Mar 24 jQuery
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
jQuery基于随机数解决中午吃什么去哪吃问题示例
Dec 29 jQuery
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
Jquery Fade用法详解
Nov 06 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加密解密类代码
2011/11/27 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
python编程线性回归代码示例
2017/12/07 Python
Python中的Django基本命令实例详解
2018/07/15 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
教师校本培训方案
2014/02/26 职场文书
治超工作实施方案
2014/05/04 职场文书
天地会口号
2014/06/17 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
公诉意见书范文
2015/06/05 职场文书
python保存图片的四个常用方法
2022/02/28 Python