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 相关文章推荐
JavaScript 构造函数 面相对象学习必备知识
Jun 09 Javascript
JavaScript栏目列表隐藏/显示简单实现
Apr 03 Javascript
js中小数转换整数的方法
Jan 26 Javascript
浅谈JavaScript字符集
May 22 Javascript
node.js中的fs.fsync方法使用说明
Dec 15 Javascript
jQuery插件expander实现图片翻转特效
May 21 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
Vue-CLI与Vuex使用方法实例分析
Jan 06 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 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的日期与时间函数技巧
2008/04/24 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
Python类属性的延迟计算
2016/10/22 Python
简单了解python模块概念
2018/01/11 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Django 路由控制的实现
2019/07/17 Python
python+logging+yaml实现日志分割
2019/07/22 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
测绘工程专业求职信
2014/07/15 职场文书
协会周年庆活动方案
2014/08/26 职场文书
倡议书的写法
2014/08/30 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python