vue element中axios下载文件(后端Python)


Posted in Javascript onMay 10, 2019

•axios 接受文件流,需要设置 {responseType:'arraybuffer'}

axios.post(
  apiUrl,
  formdata, 
  {responseType:'arraybuffer'}
).then(res=> {
if (res.status === 200) {
 
let blob = new Blob([res.data], {
 
 type: res.headers['content-type']
 
 });

 
 const fileName = res.headers['content-disposition'];

 const title = fileName && (fileName.indexOf('filename=') !== -1) ? fileName.split('=')[1] : 'download';


  require('script-loader!file-saver');

 saveAs(blob, title);
} 
})
.catch();

注: axios 中 response 表示服务器响应的数据类型,可以是 arraybuffer , blob, document , json , text , stream . 默认为: json

•后端发送文件:Python

from flask import send_from_directory
@admin_bp.route('/tasksothers/download', methods=["GET", "POST"])
@auth.login_required
def api_tasksothers_download():
    root_path = ''
    src_name = "a.sql"
    upload_path = os.path.join(root_path, src_name)
    print("upload_path =", upload_path)
    if os.path.isfile(upload_path):
      response = send_from_directory(root_path, src_name, as_attachment=True)
      print("response: ",response)

      response.headers["Access-Control-Expose-Headers"] = "Content-disposition"
      print("response: ", response.headers)
      return response

注: 如果 response.header 中没有添加  Access-Control-Expose-Headers 这个参数(代表:服务器允许浏览器访问的头(headers)的白名单),vue中就无法获取 content-disposition,即 res.headers['content-disposition'];无法找到

总结

以上所述是小编给大家给大家介绍的vue element中axios下载文件(后端Python),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
Jan 08 Javascript
javascript获取ckeditor编辑器的值(实现代码)
Nov 18 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
Sep 01 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
vue中的scope使用详解
Oct 29 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
node+multer实现图片上传的示例代码
Feb 18 Javascript
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 #Javascript
简单通过settimeout看javascript的运行机制
May 10 #Javascript
详解js实时获取并显示当前时间的方法
May 10 #Javascript
JS获取本地地址及天气的方法实例小结
May 10 #Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 #Javascript
vue无限轮播插件代码实例
May 10 #Javascript
js中的深浅拷贝问题简析
May 10 #Javascript
You might like
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP.vs.JAVA
2016/04/29 PHP
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
Python set常用操作函数集锦
2017/11/15 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
python基础 range的用法解析
2019/08/23 Python
python switch 实现多分支选择功能
2020/12/21 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
2014自主招生自荐信策略
2014/01/27 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
技术合作协议书范本
2014/04/18 职场文书
啤酒节策划方案
2014/05/28 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
七一建党日演讲稿
2014/09/05 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
董事会决议范本
2015/07/01 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书