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

在做登录验证码的时候,后端生成的验证码,通过图片流发送给前端,用平时直接src="url"的方法行不通,项目中请求接口又是封装好了。避免其他接口出现问题,而且这个用到次数不多,干脆自己重新写一个请求

uni.request({
		url: '你请求的地址',
		method: 'POST',
		data:data,
		header:header,//请求头
		responseType: 'arraybuffer',//告诉服务器你希望得到的响应类型为arraybuffer(二进制数据)类型
		    success: res => {
			let result = res.data;
            //imgUrl就是我们所需要的数据
			this.imgUrl = 'data:image/png;base64,' + btoa(new Uint8Array(datas).reduce((datas, byte) => datas + String.fromCharCode(byte), ''));
            //微信小程序不支持btoa,所以可以用下面这个
			// this.imgUrl = 'data:image/png;base64,'+uni.arrayBufferToBase64(datas);
			},
		});

这个时候在通过src="imgUrl"就能将图片正常展示出来了

得到如下效果

 后续有新方法会持续更新~

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app中接收后端返回式数据,可以使用WebSocket或者长连接的方式。 1. WebSocket方式: 在uni-app中,可以使用uni.createSocket()方法创建WebSocket对象,通过监听onMessage事件来接收后端返回式数据。示例代码如下: ```javascript // 创建WebSocket对象 const socket = uni.createSocket({ url: 'ws://xxx.xxx.xxx.xxx:xxxx', // WebSocket地址 header: { 'content-type': 'application/json' } }) // 监听WebSocket连接成功事件 socket.onOpen((res) => { console.log('WebSocket连接已打开!') }) // 监听WebSocket接收到消息事件 socket.onMessage((res) => { console.log('接收到消息:', res) }) // 监听WebSocket错误事件 socket.onError((res) => { console.log('WebSocket连接错误:', res) }) // 监听WebSocket关闭事件 socket.onClose((res) => { console.log('WebSocket连接已关闭!') }) // 关闭WebSocket连接 socket.close() ``` 2. 长连接方式: 在uni-app中,可以使用uni.connectSocket()方法创建长连接对象,通过监听onSocketMessage事件来接收后端返回式数据。示例代码如下: ```javascript // 创建长连接对象 const socketTask = uni.connectSocket({ url: 'ws://xxx.xxx.xxx.xxx:xxxx', // 长连接地址 header: { 'content-type': 'application/json' } }) // 监听长连接连接成功事件 socketTask.onOpen((res) => { console.log('长连接已打开!') }) // 监听长连接接收到消息事件 socketTask.onMessage((res) => { console.log('接收到消息:', res) }) // 监听长连接错误事件 socketTask.onError((res) => { console.log('长连接错误:', res) }) // 监听长连接关闭事件 socketTask.onClose((res) => { console.log('长连接已关闭!') }) // 关闭长连接 socketTask.close() ``` 以上是两种接收后端返回式数据的方式,具体使用哪种方式,需要根据接口返回的数据类型以及业务需求来决定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值