function uploadImg(req,resp,filePath,targetFileKey,table){//请求 响应 目标文件夹 最终的文件目录(以请求中的某个字段来作为文件夹)
var p = new Promise((resolve,reject)=>{
fs.exists(filePath,res=>{
resolve(res);
});
}).then(res=>{
return new Promise((resolve,reject)=>{
if (!res){
fs.mkdir(filePath,err=>{
if (!err){
resolve(true);
}else {
reject(err);
return ;
}
})
}else {
resolve(true);
}
})
}).then(result=>{
return new Promise((resolve,reject)=>{
var form = new multiparty.Form({uploadDir: filePath});
form.parse(req, function(err, fields, files) {
if (err) {
console.log(err);
resp.send('错误');
return;
}
console.log(fields);
//判断是否第一次上传图片
var userPath = path.join(filePath, `/${fields['loginName'][0]}`);//用户目录
var savePath = path.join(userPath, `/${targetFileKey}`); //存放目录
resolve({userPath,savePath,fields,files});
})
})
}).then(res=>{ //判断用户文件夹是否存在
return new Promise((resolve,reject)=>{
//如果不存在创建一个文件夹
fs.exists(res["userPath"],result=>{
if (!result){
fs.mkdir(res["userPath"],err=> {
if (err){
throw err;
return ;
}
resolve(res);
})
}else {
//如果子文件夹不存在创建一个
console.log(res["savePath"]);
fs.exists(res["savePath"],exits=>{
if (!exits){
fs.mkdir(res["savePath"],err=>{
if (err){
throw err;
return ;
}else {
resolve(res);
}
})
} else{
resolve(res);
}
})
}
})
})
}).then(res=>{ //判断分类文件夹是否存在
return new Promise((resolve,reject)=>{
let files = res["files"];
var data = {result :"图片上传成功",pic:""};
for (let key in files){
var imgName = files[key][0].originalFilename;
var oldName = files[key][0].path;
var imgPath = path.join(res["savePath"],imgName);
data[key] = imgPath;
renameImg(oldName,imgPath);
}
resolve(data);
});
});
return p;
}
function renameImg(oldName,imgPath){
fs.exists(imgPath,succ=>{ //判断图片是否存在,不存在直接存入
if (!succ){
//重命名图片
fs.rename(oldName, imgPath, function(err) {
if(err){
reject("err"+err);
return;
} else {
console.log("不存在存入图片");
return {key:imgPath};
}
});
}else{ //删除后存入
fs.unlinkSync(imgPath);
//重命名
console.log("存在存入图片");
fs.rename(oldName, imgPath, function(err) {
if(err){
reject("err"+err);
return ;
} else {
return {key:imgPath};
return;
}
});
}
})
}
//调用
util.uploadImg(req, resp, path.join(__dirname, "../static/user"), 'comment').then(res=>{
console.log(res);
})
//欢迎喜欢编程的同学添加我的微信
boosdm001
nodejs上传图片
最新推荐文章于 2023-01-12 18:05:14 发布