请求后端接口返回的图片:
页面展示:
代码实现:
:show-menu-by-longpress="true" 是长按保存图片
base64Code 是转为base64的地址
html
<image class="code" :src="base64Code" alt="" :show-menu-by-longpress="true" />
BASE_URL 是拼接接口地址的
javascript
const base64Code = ref('');
onLoad(() => {
//route.value.query.scene是扫描二维码后跳转链接传过来的参数(二维码携带链接是后端处理的),也就是id名称(因为我这个是扫描二维码还是跳到当前这个页面的,而后端传过来的参数名和我上个页面跳转过来传的参数名不一样)
//route.value.query.id是上个页面跳转传过来的参数
const id = route.value.query.id || route.value.query.scene;
uni.request({
url: BASE_URL + '/api/Product/GetCode?id=' + id,
responseType: 'arraybuffer',
success: (res: any) => {
base64Code.value =
'data:image/png;base64,' + uni.arrayBufferToBase64(res.data);
},
fail: (err) => {
console.log(err);
},
});
});
这样写的话好像本地和真机调试是可以出来的,但到体验版和正式版上就是空白了,经过测试,把转成base64后的地址中的换行清除一下就可以了;
base64Code.value =
'data:image/png;base64,' + uni.arrayBufferToBase64(res.data).replace(/[\r\n]/g, '');