思路:后台获取base64数据,存入文件夹,修改用户头像对应的路径。
1.上传图片
input的onchange事件
accept 上传类型,此处为图片
<input type='file' onchange = 'upload' id='uploadInput' accept="image/png, image/jpeg, image/gif, image/jpg">
// 1.获取input
let file = document.getElementById('uploadInput');
// 2.new一个FileReader
let reader = new FileReader();
//使用该对象读取file文件
reader.readAsDataURL(file);
//读取文件成功后执行的方法函数
reader.onload=(e)=>{
//读取成功后返回的一个参数e
//e.target.result即获取图片的base64编码
// src进行赋值e.target.result;
}
2.将图片写入文件夹中
// 后台拿到数据avatar,去掉前缀,取得base64;
const base64Data = avatar.replace(/^data:image\/\w+;base64,/, "");
// 将base64转化为buffer
const dataBuffer = new Buffer(base64Data, 'base64');
// 给文件命名
const filename = "avatar"+ new Date().getTime()+".png";
// 写入文件
fs.writeFile("../public/static/images/"+filename, dataBuffer, function(err) {
if(!err){
// 将路径写到userInfo中
const data = result.find(i=>i.id == id);
if(data){
data.file = "/static/images/"+filename;
fs.writeFile('./db/usersInfo.json',JSON.stringify(usersInfo),(err)=>{
// 操作
}
}
}else{
console.log(err);
}
});