收藏
回答

微信小程序base64 转换file报错 ,File is not defined?

因为功能需要使用oss 分断续传

手机获取视屏后,转换为base64 然后在转换file格式传递,但是在使用new File 就报错了,小程序不支持吗,

有什么方法解救一下哇,help

async function dataURLtoFile(url, filename) {
  /* 文件转换为base64 */
  wx.getFileSystemManager().readFile({
    filePath: url, //选择图片返回的相对路径
    encoding: 'base64', //编码格式
    success: res => {
      //成功的回调
      let dataurl = 'data:image/png;base64,' + res.data;//拼接后返回
      console.log('base64====', dataurl);
      /* base64 转换file文件 */
      let arr = dataurl.split(',')
      let mime = arr[0].match(/:(.*?);/)[1]
      let bstr = atob(arr[1])
      let n = bstr.length
      let u8arr = new Uint8Array(n);
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      console.log('转换后的file文件', new File([u8arr], filename, { type: mime }));
      return new File([u8arr], filename, { type: mime });
    }
  });
回答关注问题邀请回答
收藏

2 个回答

  • silhouette
    silhouette
    2022-10-04

    请问有解决办法了吗


    2022-10-04
    有用
    回复 2
    • 十一块七
      十一块七
      2022-12-02
      用的oss直传
      2022-12-02
      1
      回复
    • Petrichor
      Petrichor
      2023-05-23回复十一块七
      有代码可以参考下嘛,我用也是OSS直传,他让我传Buffer/Blob/File,我传的类型不对
      2023-05-23
      1
      回复
  • Mr.Zhao
    Mr.Zhao
    发表于移动端
    2022-09-01
    小程序哪来的file对象?
    2022-09-01
    有用
    回复
登录 后发表内容