小程序和H5上传图片转成Base64格式

小程序和H5上传图片转成Base64格式


前言

由于这次移动图片上传需要使用base64

我们移动端需要兼容小程序和H5(后期打包成APP)


一、Base64是什么?

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法,由于 2^6=64,所以每 6 个比特为一个单元,对应某个可打印字符。

Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。

二、Base转换

小程序的转换

代码如下(示例):

const fileToBase64 = filePath => {
    
    
    return new Promise(resolve => {
    
    
      let fileManager = Taro.getFileSystemManager();
      fileManager.readFile({
    
    
        filePath,
        encoding: 'base64',
        success: e => {
    
    
          resolve(`data:image/jpg;base64,${
      
      e.data}`);
        },
      });
    });
  };
小程序使用getFileSystemManager来获取文件管理器,使用 fileManager.readFile() 方法读取指定路径的文件内容。通过设置 encoding 参数为 ‘base64’,将文件内容以 base64 编码的形式进行读取。

H5的转换

代码如下(示例):

const Tobase64 = async path => {
    
    
    try {
    
    
      const result = await Taro.request({
    
    
        url: path,
        responseType: 'arraybuffer',
      });
      if (result && result.statusCode !== 200) {
    
    
        Taro.getLogManager().warn('图片获取失败', result);
        throw new Error('图片获取失败。');
      }
      const arrayBuffer = result.data;
      let binary = '';
      const bytes = new Uint8Array(arrayBuffer);
      for (let i = 0; i < bytes.byteLength; i++) {
    
    
        binary += String.fromCharCode(bytes[i]);
      }
      let base64 = btoa(binary);
      base64 = 'data:image/jpeg;base64,' + base64;
      return base64;
    } catch (error) {
    
    
      console.warn('=> utilssearch.ts error imgToBase64', error);
      throw error;
    }
  };
H5接受一个参数 path,表示图片的路径。函数内部使用 request 方法发送请求,获取图片的二进制数据。然后将二进制数据转换为 base64 编码,并拼接上图片的类型信息,最后返回生成的 base64 字符串。

使用

if (process.env.TARO_ENV === 'h5') {
    
    
   file = await Tobase64(v.url);
 } else {
    
    
   file = await fileToBase64(v.url);
 }

判断是小程序还是H5的调用对应的方法。


总结

根据场景的不同转换的方式也不一样,在小程序和H5转换的方式也不一样。以上把小程序和H5的转换的方式都列出了,方便有需要的小伙伴使用。

猜你喜欢

转载自blog.csdn.net/weixin_46613448/article/details/132210644