前端处理接口返回来的文件流的两种操作

前言

本文打算总结下,本人在实际项目中,经常遇到的关于处理后端接口返回文件流后的两种操作;哦,对了,还有一种最入门的基操,就是get请求,直接window.open(...),这种在这里就不列了哈~

第一种:post请求,接口返回文件流,将其在浏览器中下载

代码

这种是除了window.open之外,算是很常见的一种处理方式了,话不多说,代码如下:

这上面这个,我是对axios进行了二次封装,这里的_post,其实就是axios的post请求哈

效果

然后我们就实现了下载咯~

第二种:在img标签的src中,要显示后端接口返回过来的数据流

emmm,这种真的一言难尽呐,因为token权限的问题,所以我们就算要请求图片资源,也要在请求头上拼接x-token,所以就出来了这种,

代码

我先进行了组件封装,代码如下:

dart 复制代码
<template>
    <img :class="className" ref="img  alt=""/>
</template>
<script>
export default {
    props: {
        src: {
            type:String,
            default:''
        },
        className: {
            type:String,
            default:''
        }
    },
    watch: {
        src: {
            handler(newVal) {
                if(newVal){
                    this.handlePreview(newVal)
                }
            },
            immediate:true,
        }
    },
    methods: {
        async handlePreview(item) {
            const url = item || ""
            const headers = {
                "x-token":sessionStorage.token, //这里就是要传的token
                responseType:'blob',    //注意这个要传blob类型
           }
            if(url){
                this.$nextTick(() => {
                    this._get(url,{},header).then(res => {
                        let blob = new Blob([res],{type:'image/jpeg})
                        let imgUrl = URL.createObjectURL(blob)
                        this.$refs.img.src = imgUrl
                        this.$refs.img.onload = () => {
                            this.$refs.img && URL.revokeObjectURL(this.$refs.img.src)
                        }
                    }
                })
            }
        }
    }
}
</script>

使用:

然后图片的路径都变成了这种格式:

效果

最终,我们的图片都可以访问出来咯~

相关推荐
Ulyanov12 分钟前
从桌面到云端:构建Web三维战场指挥系统
开发语言·前端·python·tkinter·pyvista·gui开发
cypking25 分钟前
二、前端Java后端对比指南
java·开发语言·前端
摘星编程27 分钟前
用React Native开发OpenHarmony应用:timing定时动画参数
javascript·react native·react.js
糠帅傅蓝烧牛肉面28 分钟前
单实例多MCP聚合服务:两种实现方案深度对比
前端·docker·ai
JosieBook1 小时前
【Vue】12 Vue技术—— Vue 事件修饰符详解:掌握事件处理的高级技巧
前端·javascript·vue.js
摘星编程1 小时前
在OpenHarmony上用React Native实现AnimatedValue补间动画
javascript·react native·react.js
摘星编程1 小时前
React Native鸿蒙版:AnimatedXY双轴动画完整代码
javascript·react native·react.js
艾斯特_2 小时前
Echarts常用配置项及解释
前端·javascript·echarts
m0_502724952 小时前
飞书真机调试
开发语言·前端·javascript
我只会写Bug啊2 小时前
复制可用!纯前端基于 Geolocation API 实现经纬度获取与地图可视化
前端·高德地图·地图·百度地图·经纬度