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 相关文章推荐
JavaScript实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
javascript中sort排序实例详解
Jul 24 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
Bootstrap整体框架之CSS12栅格系统
Dec 15 Javascript
Angular 4.x中表单Reactive Forms详解
Apr 25 Javascript
jQuery实现按比例缩放图片的方法
Apr 29 jQuery
微信小程序 支付后台java实现实例
May 09 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 Javascript
jQuery轮播图实例详解
Aug 15 jQuery
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
JavaScript判断浏览器版本的方法
Nov 03 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
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python 中random模块的常用方法总结
2017/07/08 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
时尚圣经:The Fashion Bible
2019/03/03 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
工商管理系学生的自我评价分享
2013/11/29 职场文书
大学校运会广播稿
2014/02/03 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
Python中time与datetime模块使用方法详解
2022/03/31 Python
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技