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 相关文章推荐
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
Oct 24 Javascript
js常用代码段收集
Oct 28 Javascript
js实现简单的星级选择器提交效果适用于评论等
Oct 18 Javascript
js实现获取div坐标的方法
Nov 16 Javascript
如何利用Promises编写更优雅的JavaScript代码
May 17 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
JavaScript函数柯里化原理与用法分析
Mar 31 Javascript
vue组件如何被其他项目引用
Apr 13 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
js实现跟随鼠标移动的小球
Aug 26 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
PHP 表单提交给自己
2008/07/24 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
看了就知道什么是JSON
2007/12/09 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
详解如何利用Cython为Python代码加速
2018/01/27 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
Django实现内容缓存实例方法
2020/06/30 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
土木工程应届生求职信
2013/10/31 职场文书
参观考察邀请函范文
2014/01/29 职场文书
学习交流会主持词
2014/04/01 职场文书
英语分层教学实施方案
2014/06/15 职场文书
祝酒词范文
2015/08/12 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js