vue前端axios下载文件教程,接收后端返回的二进制流处理并下载

web前端下载文件,接收后端返回的二进制流并下载

一般情况下,前端下载文件,后端会返回二进制流文件给我们

HTML代码:给按钮绑定点击事件

<el-form-item label="下载附件">
	<el-button @click="downBtn" type="primary">下载</el-button>
</el-form-item>

后端接口文档

请求方式:get
接口地址:/download
请求参数:path: ‘xxx.jpg’

Js代码

downBtn(){
   axios({
		//此处对应填写后端规定的分请求方式get
        method: 'GET',
        //此处填写后端规定的接口地址
        url: '/download’,
        params: {
        	//此处填写后端规定的请求参数
            path: 'xxx.jpg'
        },
        //此处规定请求成功返回的是流形式文件
        responseType: 'blob'
    }).then(res => {
        if(res.data.response_code == 500){
        	//后端返回值为500,请求失败,提醒用户
        	//res.data.response_message为后端返回的失败信息
        	alert("res.data.response_message")
        }else{
        	//请求成功,返回的数据
            const blob = new Blob([res.data], { type: res.data.type })
            //判断返回的文件是否为空文件
            if(blob.size!=0){
            	//生成一个a连接
                let tag = document.createElement( "a" );
                //将返回的数据生成url赋值给a链接
                tag.href = URL.createObjectURL( blob );
                //此处规定要下载的文件名称,带文件后缀,要不然可能下载出错
                tag.download = 'xxx.jpg';
                //模拟按钮点击下载
                tag.click();
                //下载后释放url对象
                URL.revokeObjectURL( tag.href );
            }else{
            	alert("未请求到数据,请联系管理员!")
            }
        }
    })
    .catch((rej) => {
        console.log(rej)
    });
},

此方法也可以下载其他类型的文件
如有写的不清楚的可评论私信联系我,欢迎指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值