//过滤图片url
let base64 = imgSrc.replace(/^data:image\/\w+;base64,/, "")
//把图片转换成buffer对象
let dataBuffer = new Buffer(base64, 'base64')
//保存图片的地址是
let path = 'static/upload/image'+'.jpg'
//保存图片
fs.writeFile(path,dataBuffer,(err) => {
if(err) {
console.log(err)
}else {
console.log('保存图片成功')
}
})
我的做法:
1.首先将base64图片的url过滤掉前面的data:image...字符串
2.将过滤的图片转为二进制
3.用fs保存到后台
但是保存成功后的图片无法解析(如图),那我怎么在前端再获取图片呢?
这样前端获取的图片就显示不出来了,因为图片无法解析。是不是我保存的方式不对,要怎么做?
已经找到图片无法解析的原因了,base64编码,使用express接收POST值后,base64编码字符串中的“+”号被替换成空格了,引起编码出错,img.src = base64Data;直接把nodejs服务挂掉。如果你出现类似问题,请console.log(base64Data);看字符串是否有空格。
解决办法:
将空格替换回“+”号
var base64Data = imgData.replace(/s/g,"+");