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面象对象设计
Apr 28 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
js实现对table动态添加、删除和更新的方法
Feb 10 Javascript
JS命令模式例子之菜单程序
Oct 10 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
小程序server请求微信服务器超时的解决方法
May 21 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
Sep 11 Javascript
微信小程序绑定手机号获取验证码功能
Oct 22 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
xajax写的留言本
2006/11/25 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
php模板引擎技术简单实现
2016/03/15 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
NodeJs基本语法和类型
2015/02/13 NodeJs
jQuery性能优化技巧分析
2015/02/20 Javascript
理解javascript对象继承
2016/04/17 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
原生js实现轮播图
2017/02/27 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
Vue实现简单分页器
2018/12/29 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
python基于socket实现网络广播的方法
2015/04/29 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
法制宣传月活动方案
2014/05/11 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
学生会招新宣传语
2015/07/13 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
详解mysql三值逻辑与NULL
2021/05/19 MySQL
Golang中异常处理机制详解
2021/06/08 Golang