vue 使用post/get 下载导出文件操作


Posted in Javascript onAugust 07, 2020

我就废话不多说了,大家还是直接看代码吧~

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>前端项目下载导出文件</title>
	</head>
	<body>
		<script>
			
		/**
		 * post 方式 
		 * 返回:文件流
		 * 好处:可以自己修改文件名称 方便调试
		 */
	  let params ={      
			ListData : this.ListData     
		}
   	_this.$http.post(url,params,{responseType:"arraybuffer"} //必须添加项
    ).then(function(res) {
      console.log(res)
      var blob = new Blob([res.data], {type: 'application/msword;charset=utf-8'});
      var filename = "download.doc";
      var a = document.createElement('a');
      var url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = filename;
      var body = document.getElementsByTagName('body')[0];
      body.appendChild(a);
      a.click();
      body.removeChild(a);
      window.URL.revokeObjectURL(url);
		}
		
		/**
		 * get 方式
		 * 返回:文件流
		 * 好处:前台什么都不需要处理 完全后台处理
		 * 缺点:不变调试(需要确保后台接口稳定)
		 */
		let exportURL = `api/sysLog/export?content=${content}&ip=${ip}`;
   	window.open(exportURL, "_blank")
		
		</script>
	</body>
</html>

补充知识:双向数据绑定原理(三种实现方式)

大家还是看看代码吧~

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>双向数据绑定原理(三种实现方式)</title>
	</head>
	<body>
		<input type="text" id="a" />
		<span id="b"></span>
		<!--
			
			//脏检查
			我们说Angularjs(这里特指AngularJS 1.x.x版本,不代表AngularJS 2.x.x版本)双向数据绑定的技术实现是脏检查,大致的原理就是,
			Angularjs内部会维护一个序列,将所有需要监控的属性放在这个序列中,当发生某些特定事件时(注意,
			这里并不是定时的而是由某些特殊事件触发的),Angularjs会调用 $digest 方法,这个方法内部做的逻辑就是遍历所有的watcher,
			对被监控的属性做对比,对比其在方法调用前后属性值有没有发生变化,如果发生变化,则调用对应的handler。
			网上有许多剖析Angularjs双向数据绑定实现原理的文章,比如 这篇 ,再比如 这篇 ,等等。
			这种方式的缺点很明显,遍历轮训watcher是非常消耗性能的,特别是当单页的监控数量达到一个数量级的时候。
			
			//观察机制
			博主之前有一篇转载翻译的文章, Object.observe()带来的数据绑定变革 ,说的就是使用ECMAScript7中的 Object.observe 方法对对象
			(或者其属性)进行监控观察,一旦其发生变化时,将会执行相应的handler。
			这是目前监控属性数据变更最完美的一种方法,语言(浏览器)原生支持,没有什么比这个更好了。唯一的遗憾就是目前支持广度还不行,有待全面推广。
			
			//封装属性访问器
			国产mvvm框架vue.js实现数据双向绑定的原理就是属性访问器。
			它使用了ECMAScript5.1(ECMA-262)中定义的标准属性 Object.defineProperty 方法。针对国内行情,
			部分还不支持 Object.defineProperty 低级浏览器采用VBScript作了完美兼容,不像其他的mvvm框架已经逐渐放弃对低端浏览器的支持。
			
		-->
		<script>
		
			//封装属性访问器
			//Object.defineProperty(obj, prop, descriptor)
			//obj ,待修改的对象
			//prop ,带修改的属性名称
			//descriptor ,待修改属性的相关描述
			var obj = {};
			Object.defineProperty(obj,'a',{
				set:function(newVal){
					document.getElementById('a').value = newVal;
					document.getElementById('b').innerHTML = newVal;
				}
			});
			
			document.addEventListener('keyup',function(e){
				obj.a = e.target.value;
			});
			
			
		</script>
		
	</body>
</html>

以上这篇vue 使用post/get 下载导出文件操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
免费空间广告万能消除代码
Sep 04 Javascript
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
Feb 09 Javascript
在多个页面使用同一个HTML片段的代码
Mar 04 Javascript
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
May 31 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
JS动态修改网页body的背景色实例代码
Oct 07 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
ElementUI radio组件选中小改造
Aug 12 Javascript
VUE实现移动端列表筛选功能
Aug 23 Javascript
Javascript模拟实现new原理解析
Mar 03 Javascript
基于javascript的无缝滚动动画实现2
Aug 07 #Javascript
vue 在methods中调用mounted的实现操作
Aug 07 #Javascript
javascript实现图片轮换动作方法
Aug 07 #Javascript
vue style width a href动态拼接问题的解决
Aug 07 #Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 #Javascript
JavaScript实现与web通信的方法详解
Aug 07 #Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
Aug 07 #Javascript
You might like
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
js版本A*寻路算法
2006/12/22 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
子页向父页传值示例
2013/11/27 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
浅谈js闭包理解
2019/03/28 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Python文本特征抽取与向量化算法学习
2017/12/22 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python查看模块,对象的函数方法
2018/10/16 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
大学生涯自我鉴定
2014/01/16 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
oracle索引总结
2021/09/25 Oracle