uniapp 图片存base64

// 转base64
    async urlToBase64(url) {
      // 非真机
      if (url.startsWith('blob:http:')||url.startsWith('blob:https:')) {
        return new Promise((resolve, reject) => {
          uni.request({
            url: url,
            method: 'GET',
            responseType: 'arraybuffer',
            success: res => {
              let base64 = wx.arrayBufferToBase64(res.data);
              base64 = 'data:image/jpeg;base64,' + base64;
              resolve(base64);
            },
            fail: err => {
              reject(err);
            }
          });
        });
      } else {
        // 真机
        return new Promise((resolve, reject) => {
          const systemInfo = uni.getSystemInfoSync();
          
          // 设备类型
          if (systemInfo.platform === 'android' || systemInfo.platform === 'ios') {
            // 使用 plus.io (Android/iOS)
            plus.io.resolveLocalFileSystemURL(url, (entry) => {
              entry.file((file) => {
                const reader = new plus.io.FileReader();
                reader.readAsDataURL(file);
                reader.onloadend = () => {
                  const base64 = reader.result;
                  resolve(base64);
                };
                reader.onerror = (err) => {
                  reject(err);
                };
              });
            }, (err) => {
              reject(err);
            });
          } else {
            // 在网页或小程序中使用uni.getFileSystemManager获取本地文件
            const fs = uni.getFileSystemManager();
            fs.readFile({
              filePath: url,
              encoding: 'base64',
              success: res => {
                const base64 = 'data:image/jpeg;base64,' + res.data;
                resolve(base64);
              },
              fail: err => {
                reject(err);
              }
            });
          }
        });
      }
    },
//使用
async init(url){
    //url:图片路径
    ​​​​​​​const base64Data = await this.urlToBase64(url);
},

亲测可用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值