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调试技巧解决样式问题的步骤分享
Mar 15 Javascript
SeaJS入门教程系列之使用SeaJS(二)
Mar 03 Javascript
判断日期是否能跨月查询的js代码
Jul 25 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
Apr 16 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
Nov 03 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 Javascript
Angular8 实现table表格表头固定效果
Jan 03 Javascript
如何利用js在两个html窗口间通信
Apr 27 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
Sea.JS知识总结
2016/05/05 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
详解微信小程序的 request 封装示例
2018/08/21 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python分治法定义与应用实例详解
2017/07/28 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Python File(文件) 方法整理
2019/02/18 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
Python列表操作方法详解
2020/02/09 Python
python中os包的用法
2020/06/01 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
公务员个人考察材料
2014/12/23 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
小组组名及励志口号
2015/12/24 职场文书
医学会议开幕词
2016/03/03 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
Redis安装启动及常见数据类型
2021/04/14 Redis
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python