base64数据上传,如何转换成小程序认可的临时文件?
发布于 7 年前 作者 kcai 6176 次浏览 来自 问答

麻烦官方答复下 谢谢。

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

各位大神还有其它方法吗

1 回复

网上找了个方法,已经测试过了可以正常上传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’));

}

})

回到顶部