uniapp-5.项目记录 处理图片后台返回乱码,前端展示问题

751 阅读1分钟

要拿到后端的验证码图片,访问接口后端返回的响应数据是一对乱码的文

浏览器是这样子显示的

111.png

222.png

后台获取到的信息是:

乱码.png

解决方法: 1.一开始寻找方法的时候,大致得到就是将 responseType 设置为 blob,但是不生效,之后看了一下,因为我用的是uni.request来访问后台的,查看了官网发现,uni.request的requestType只有text,arrayBuffer,所以设置相应类型为arrayBuffer

2.获取到的值是下面代码图这样子,需要将得到的arrayBuffer数据转成base64格式的数据

333.png

            <img :src="img"  alt="">


            uni.request({
                url: urlLink,
                method:'POST',
                data:data,
                header :{
                    'Content-Type':'application/json',
                },
                responseType: 'arraybuffer', // //告诉服务器你希望得到的响应类型为arraybuffer(二进制数据)类型
                success: (res) => {
                    const base64 = uni.arrayBufferToBase64(res.data);//将得到的arraybuffer数据转换为base64格式的数据
                    const imgSrc = 'data:image/png;base64,'+base64;
                    this.img= imgSrc;
                }
            })

经过这一系列转换后,传到img的数据如下图,能正常显示了

转base64.png

参考过的博文:

img标签无法显示二进制转base64的解决方法

uni-app处理图片乱码

开发uni的H5项目记实--后端返回图片流(乱码)该怎么办