前端fetch中get传参和post传参的不同文件下载方法(后端返回二进制流的文件下载方法)

1.get传参

get传参下载的文件可以不用fetch命令,直接利用window.open(url)即可
举例:window.open(“http://www.xxx.yyy?id=1&name='张三‘“)

2.post传参

如果是提交表单 后端返回二进制流, 那么下载文件方法则为:

fetch(`http://www.xxx.yyy`, {
        method: 'POST',

        body:`id=1&name="张三"`,
        headers: {
            'Content-type': 'application/x-www-form-urlencoded',
            // 'Authorization':  token,//这里放你的token,不需要token可以不放
            
         },
        responseType: 'blob', //blob获取二进制流
        
    }).then(res => {
        return res.blob(); 
    })
    .then(blob => {
        console.log('blob', blob)
        let bl = new Blob([blob]); 
        let fileName = “张三” + ".xlsx"; //设置文件名,可以通过读取响应头中的content-disposition属性(如果有的话)获取后端传来的文件名
        //下面就是下载文件的方法了,可以封装成一个函数
        var link = document.createElement('a');//创建<a>标签
        link.href = window.URL.createObjectURL(bl);//创建文件下载的URL
        link.download = fileName;//下载的文件名
        link.click();//设置点击下载
        window.URL.revokeObjectURL(link.href);//清除URL
    }).catch(err => {
            console.log('error', error)
        });

不同请求头post传参方式可见fetch不同请求的参数传递方法,感觉这个链接写的还蛮清楚的,我收获了许多。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值