get/post请求导出文件及各自的优缺点

本文探讨了使用GET和POST请求导出文件的方法,包括window.open(url)、window.location(url)、<a>标签下载,并分析了它们的优缺点。GET请求简单但错误处理较差,POST请求允许优雅的错误提示但实现相对复杂。
摘要由CSDN通过智能技术生成

一、get请求导出文件

1、window.open(url)

会自动打开一个标签页,下载完后会自动关闭这个标签页。

2、window.location(url) 或 location.href = url

在当前标签页下载。

3、< a href=“url” download=“filename”>点击链接下载< /a>

在当前标签页下载。

总结

优点:代码简单。
缺点:当导出失败时,返回的错误信息会覆盖原来的页面,错误信息可读性差。

二、post请求导出文件

1、思路

通过判断返回值的header.‘content-type’ 是否是 application/octet-stream,来确定文件导出是否成功!
content-type

  1. application/octet-stream: 返回值类型为二进制流,即导出成功;
  2. application/json;charset=utf-8:返回值类型为json格式,即导出失败信息。由于我们请求的时候设置了responseType=‘blob’,所以返回值会被转换成二进制流。
2、实现
// 以axios为例
axios({
   
    url,
    method: 'post',
    responseType: 'blob',
    params
  })
    .then
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值