收藏
回答

wx.chooseImage 能获取file类型的文件流吗

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.chooseImage 客户端 最新版 最新版

wx.chooseImage 获取本地图片,返回的是一个缓存地址,如何转换成file文件流,我试过只能转成base64,自己写代码 base64 转File会报错,是不是对 File 对象有限制?



回答关注问题邀请回答
收藏

2 个回答

  • 韬
    04-16

    问题解决了吗,遇到同样的问题

    04-16
    有用
    回复
  • จุ๊บ
    จุ๊บ
    2019-06-29

    如果转成base64 能正常显示的话,那就是你自己写的base64转file的代码问题

    2019-06-29
    有用
    回复 8
    • v
      v
      2019-06-29

      谢谢回复,base64转file代码是没问题了,至少在H5上是正常使用,但是在微信小程序上,对于转码的最后一步,new File() 会报错,我觉得可能是小程序对这个关键字又有限制

      2019-06-29
      回复
    • จุ๊บ
      จุ๊บ
      2019-06-29回复v

      用什么语言写的?如果是PHP的话,可以帮你看下。

      2019-06-29
      回复
    • v
      v
      2019-06-29回复จุ๊บ

      谢谢你,我的是前端js,下面是转码的代码,最后一行会报错

      dataURLtoFile = (dataurl, filename = 'image.jpg') => { //将base64转换为文件

      var arr = dataurl.split(',')[1] || dataurl.split(',')[0], mime = 'data:image/jpeg;base64,'.match(/:(.*?);/)[1],

      bstr = atob(arr), n = bstr.length, u8arr = new Uint8Array(n);

      while (n--) {

      u8arr[n] = bstr.charCodeAt(n);

      }

      return new File([u8arr], filename, { type: 'dase64' });

      };

      2019-06-29
      回复
    • จุ๊บ
      จุ๊บ
      2019-06-29回复v

      new file 报错的话,应该是 你加载的东西没加载正确,导致这个调用失败吧

      2019-06-29
      回复
    • 沉冰
      沉冰
      2019-07-01

      要用接口写,writefile,

      //将base64图片转化为本地用户路径,使用完后需要删除

      function savebase64Img(base64str,callback){

          console.log(base64str);

          if (base64str.indexOf('base64,')!=-1){

              let startIdx = 0;

              startIdx = base64str.indexOf('base64,') + 7;

              base64str=base64str.slice(startIdx);

          }

          const fsm = wx.getFileSystemManager();

          const FILE_BASE_NAME = 'tmp_base64src';

          const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.jpg`;

          fsm.writeFile({

              filePath,

              data: base64str,

              encoding: 'base64',

              success(){

                  console.log(filePath);

                  callback(filePath);

              },

              fail(err) {

                  console.log(err);

                  return (new Error('ERROR_BASE64SRC_WRITE'));

                      callback('');

                  }

              })

      }


      2019-07-01
      回复
    查看更多(3)
登录 后发表内容