uniapp 图片base64与file互转

uniapp base64与file互转

// base64转flie

//base64转flie

base64ToFile(base64data, cb) {
  const fsm = uni.getFileSystemManager();
  const FILE_BASE_NAME = 'tmp_base64src'; //自定义文件名
  const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
  if (!format) {
    return (new Error('ERROR_BASE64SRC_PARSE'));
  }
  // #ifdef MP-KUAISHOU
  const filePath = `${ks.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
  // #endif
  // #ifdef MP-TOUTIAO
  const { microapp, common } = uni.getEnvInfoSync();
  const filePath = `${common.USER_DATA_PATH}/${FILE_BASE_NAME + Date.now()}.${format}`;
  // #endif
  // #ifdef MP-WEIXIN
  const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME + Date.now()}.${format}`;
  // #endif
  const buffer = uni.base64ToArrayBuffer(bodyData);
  fsm.writeFile({
    filePath,
    data: buffer,
    encoding: 'binary',
    success() {
      cb(filePath);
    },
    fail() {
      return (new Error('ERROR_BASE64SRC_WRITE'));
    },
  });
}

// file转base64

fileToBase64(url, cb) {
  // #ifdef MP-WEIXIN
  uni.getFileSystemManager().readFile({
    filePath: url, //选择图片返回的相对路径
    encoding: 'base64', //编码格式
    success: res => { //成功的回调
      let base64 = 'data:image/jpeg;base64,' + res.data //不加上这串字符,在页面无法显示的哦
      // console.log("res.data",res.data)
      /** 在这里处理base64结果 **/
      cb(base64);     },     fail: (e) => {       console.log("图片转换失败");     }
  })
  // #endif   // #ifdef H5   uni.request({     url: url,     method: 'GET',     responseType: 'arraybuffer',     success: ress => {       let base64 = uni.arrayBufferToBase64(ress.data); //把arraybuffer转成base64       base64 = 'data:image/jpeg;base64,' + base64;       cb(base64);     },     fail: (e) => {       console.log("图片转换失败");     }   })   // #endif   // #ifdef APP-PLUS   plus.io.resolveLocalFileSystemURL(url, (entry) => {     // 可通过entry对象操作test.html文件     entry.file((file) => {       let fileReader = new plus.io.FileReader();       fileReader.onloadend = (evt) => {         const base64 = evt.target.result.substr(22);         cb(base64);       }       fileReader.readAsDataURL(file);     });   }, (e) => {     alert("Resolve file URL failed: " + e.message);   });   // #endif }

 

posted @ 2023-11-25 14:47  夜微热  阅读(845)  评论(0编辑  收藏  举报