z***@163.com
z***@163.com
  • 发布:2025-06-19 13:35
  • 更新:2025-06-19 14:51
  • 阅读:44

请教各位大佬,云函数获取微信小程序码 拿到buffer后,后端怎么转,前端怎么显示呢,

分类:uni-app

想获取永久的无限制的微信小程序的码,从微信已经拿到了Buffer类型的,但是不知道怎么解析,谁知道怎么搞呢,万分感谢

// 云函数调用微信接口获取小程序码  
            const result = await uniCloud.request({  
                url: `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${accessToken}`,  
                method: 'POST',  
                data: {  

                                      //此处path和page都试过了  
                    page: 'pages/index/index',  
                    // scene: 'id=123',  
                    // page: params.page || '', // 页面路径,如 'pages/index/index'  
                    scene: params.scene || '', // 场景值,如 'id=123&name=test'  
                    width: params.width || 430,  
                    auto_color: params.autoColor || false,  
                    line_color: params.lineColor || {  
                        r: 0,  
                        g: 0,  
                        b: 0  
                    },  
                    is_hyaline: params.isHyaline || false  
                },  
                dataType: 'arraybuffer' // 重要:接收二进制数据  
            });  
                      // 不知道下面方式是转的不对还是啥,前端怎么显示都显示不出来  
                         let imageBase641=Buffer.from(result.data).toString('base64'),  
            let  imageBase64=result.data,  
            let imageBase642=Buffer.from(result.data, 'binary').toString('base64'),

前端怎么解也不显示

            //方式1  
              let url=  'data:image/jpeg;base64,'+uni.arrayBufferToBase64( res.data.imageBase64)  
           //方式2  
              const arrayBuffer = new Uint8Array(res.data.imageBase64)  
          let url= 'data:image/jpeg;base64,'+uni.arrayBufferToBase64(arrayBuffer)  
          //方式3  
         let url= 'data:image/jpeg;base64,'+ res.data.imageBase64
2025-06-19 13:35 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com

提供两个思路,你可以试一试。

  1. 向AI工具提问,手写window.btoa 实现arrayBuffer转base64

  2. 微信API:FileSystemManager.writeFile,支持将arraybuffer写入文件

如果你那种方式成功了可以考虑把代码分享出来。

  • z***@163.com (作者)

    第一种试过了不行,

    第二种,我是在web端显示,不是在微信里显示,用不了微信API


    现在的思路是在往服务空间里上传,但是,也还是显示不了图片

    2025-06-19 14:53

  • 1***@qq.com

    回复 z***@163.com: 你是网页呀,感觉应该更简单,我来试试看

    2025-06-19 14:55

  • 1***@qq.com

    回复 z***@163.com: ```html

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>arrayBuffer2Base64</title>

    </head>

    <body>

    <input type="file" id="fileInput" />

    <img style="width: 100px; height: 100px" src="" alt="" id="previewImg" />


    <script>  
    const fileInput = document.getElementById("fileInput");
    const previewImg = document.getElementById("previewImg");

    const arrayBufferToBase64 = (buffer) => {
    let binary = "";
    const bytes = new Uint8Array(buffer);
    const len = bytes.byteLength;
    for (let i = 0; i < len; i++) {
    binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
    };

    fileInput.addEventListener("change", (event) => {
    const file = event.target.files[0];
    const reader = new FileReader();
    reader.onload = function (e) {
    const arrayBuffer = e.target.result;
    const base64 = arrayBufferToBase64(arrayBuffer);
    previewImg.src = `data:image/png;base64,${base64}`;
    };

    reader.readAsArrayBuffer(file);
    });
    </script>

    </body>

    </html>



    感觉没有问题呀。

    2025-06-19 15:03

  • z***@163.com (作者)

    回复 1***@qq.com: 解决了解决了,是dataType: 'arraybuffer'写错了,改成responseType就ok了,直接给result.data扔到uniCloud.uploadFile({

    fileContent: result.data,

    cloudPath: 'test4.jpeg',

    success: (res) => {

    console.log('上传成功------------->', res.fileID);

    }

    });就可以了

    2025-06-19 15:06

  • 1***@qq.com

    回复 z***@163.com: 可以就行,我都准备去翻以前的代码了

    2025-06-19 15:07

  • z***@163.com (作者)

    回复 1***@qq.com: 哈哈,感谢感谢

    2025-06-19 15:18

要回复问题请先登录注册