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脚本实现Web页面信息交互
Oct 11 Javascript
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
js 如何实现对数据库的增删改查
Nov 23 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
jQuery中not()方法用法实例
Jan 06 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 Javascript
vue中v-model的应用及使用详解
Jun 27 Javascript
vue-cli webpack配置文件分析
May 20 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
python温度转换华氏温度实现代码
2020/12/06 Python
如何利用python生成MD5并去重
2020/12/07 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
简单说说tomcat的配置
2013/05/28 面试题
linux面试题参考答案(1)
2016/01/22 面试题
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
初婚初育证明范本
2014/11/24 职场文书
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS