uni-app多图上传将图片转成base64,最终生成一个base64数组并传给后台

发布于 1周前 作者 caililin 来自 Uni-App

uni-app多图上传将图片转成base64,最终生成一个base64数组并传给后台

多图上传将图片转成base64的,最终需要一个base64的数组,把这个数组传给后台

4 回复

可以做,联系QQ:1804945430


承接H5、小程序、APP等外包:

经验丰富,做过多种类型项目,有案例可看;
整个项目外包可以找我(小团队接单,面向客户、产品);
只需要前端部分也可以找我(个人接单,面向服务端合作伙伴);
wechat(13070273424);

定制插件即可 联系微信 zhimitec

在处理 uni-app 多图上传并将图片转成 Base64 格式,最终生成一个 Base64 数组传给后台的任务时,你可以通过以下代码实现这一功能。以下是详细的实现步骤和代码示例:

  1. 选择图片:使用 uni.chooseImage API 选择图片。
  2. 读取图片并转为 Base64:通过 uni.getFileSystemManager 读取图片文件并转为 Base64 编码。
  3. 生成 Base64 数组:将所有图片的 Base64 编码存储到一个数组中。
  4. 传给后台:通过 uni.request 将 Base64 数组传给后台。
// 选择图片并转为Base64数组
uni.chooseImage({
    count: 9, // 最多可以选择的图片张数
    success: (res) => {
        const filePaths = res.tempFilePaths;
        const base64Array = [];

        filePaths.forEach((filePath) => {
            const fs = uni.getFileSystemManager();
            fs.readFile({
                filePath,
                encoding: 'base64',
                success: (result) => {
                    // 去掉base64编码头部信息 data:image/png;base64,
                    const base64Data = result.data.replace(/^data:image\/\w+;base64,/, "");
                    base64Array.push(base64Data);

                    // 检查是否所有图片都已处理完毕
                    if (base64Array.length === filePaths.length) {
                        // 所有图片都已处理完毕,传给后台
                        uploadToBackend(base64Array);
                    }
                },
                fail: (err) => {
                    console.error('读取图片失败', err);
                }
            });
        });
    },
    fail: (err) => {
        console.error('选择图片失败', err);
    }
});

// 上传Base64数组到后台
function uploadToBackend(base64Array) {
    uni.request({
        url: 'https://your-backend-api.com/upload', // 替换为你的后台API地址
        method: 'POST',
        data: {
            images: base64Array
        },
        header: {
            'Content-Type': 'application/json' // 根据后台要求设置请求头
        },
        success: (res) => {
            console.log('上传成功', res.data);
        },
        fail: (err) => {
            console.error('上传失败', err);
        }
    });
}

在这个示例中,我们首先通过 uni.chooseImage 选择图片,然后使用 uni.getFileSystemManager 读取图片文件并转为 Base64 编码。在所有图片处理完毕后,我们将 Base64 数组通过 uni.request POST 请求传给后台。

请注意:

  • Base64 编码会增大图片数据的大小,如果图片较大或数量较多,可能会导致请求时间过长或失败。因此,在生产环境中,建议根据需求选择适当的图片上传方式,比如直接上传图片文件而非 Base64 编码。
  • 根据你的后台接口要求,可能需要调整请求的 URL、请求头和数据格式。
回到顶部