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去除右边逗号的简单方法
Jul 03 Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
Vue自定义指令使用方法详解
Aug 21 Javascript
原生JS实现的碰撞检测功能示例
May 18 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
今天,小程序正式支持 SVG
Apr 20 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 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
PHP session会话的安全性分析
2011/09/08 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
Django添加sitemap的方法示例
2018/08/06 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python返回数组的索引实例
2019/11/28 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
自荐信要包含哪些内容
2013/11/06 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
合作经营协议书
2014/04/17 职场文书
安全目标管理责任书
2014/07/25 职场文书
教师党员整改措施
2014/10/24 职场文书
质量保证书怎么写
2015/02/27 职场文书
正规欠条模板
2015/07/03 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android