收藏
回答

base64数据上传,如何转换成小程序认可的临时文件?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug upload 客户端 7.0.0 1.9.1


麻烦官方答复下 谢谢。

现在有base64图片数据,需要上传到服务器。有没好的方法,我看论坛有不少用canvas的方法。

各位大神还有其它方法吗

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

1 个回答

  • 王凡
    王凡
    2019-04-17

    网上找了个方法,已经测试过了可以正常上传base64的图片到服务器。

    逻辑上就是先把现有的base64数据,通过FileSystemManager保存成临时文件。

    然后使用upload上传,下面是源码


    const fsm = wx.getFileSystemManager();

    const FILE_BASE_NAME = 'tmp_base64src';

    const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64str) || [];

    if (!format) {

    return (new Error('ERROR_BASE64SRC_PARSE'));

    }

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

    const buffer = wx.base64ToArrayBuffer(bodyData);

    fsm.writeFile({

    filePath,

    data: buffer,

    encoding: 'binary',

    success() {

        wx.uploadFile({

        url: `后台配置的服务器路径`,

        filePath: filePath,

        name:'file',

        success: res,

        fail: rej,

        header: headers,

        })

    },

    fail() {

    return (new Error('ERROR_BASE64SRC_WRITE'));

    }

    })


    2019-04-17
    有用
    回复 1
    • spring
      spring
      2020-10-08
      没有用啊,上线之后就上传不了了
      2020-10-08
      回复
登录 后发表内容