小程序
小游戏
企业微信
微信支付
扫描小程序码分享
麻烦官方答复下 谢谢。
现在有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'));
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
网上找了个方法,已经测试过了可以正常上传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'));
}
})