Node判断文件路径是否存在,不存在逐步创建目录
//图片上传
async upLoadPhotoFile({}, { ctx, userid }) {
const { app } = this;
try {
//1.获取文件流
const stream = await this.ctx.getFileStream();
let baseDir = this.config.JDCHBFileDir; //保存的路径
//2.获取图片类型
const fileExt = stream.filename.substr(stream.filename.lastIndexOf("."));
const SaveFileName = stream.fields.SaveFileName;
if(!SaveFileName){
SaveFileName="allphoto";
};
let filename =ctx.helper.dataFormat(new Date(), "yyyyMMddhhmmss") +"_" +Math.floor(Math.random() * 10000 + 1000)+fileExt;
const url = path.join(baseDir, SaveFileName+"/");
//2.保存路径是否存在,不存在则逐级创建目录
if (!fs.existsSync(url)) {
url.split(path.sep).reduce((currentPath, folder) => {
currentPath += folder + path.sep;
if (!fs.existsSync(currentPath)) {
fs.mkdirSync(currentPath);
}
return currentPath;
}, "");
}
//3.保存文件
const savepath = path.join(url, filename);
const writeStream = fs.createWriteStream(savepath);
await awaitWriteStream(stream.pipe(writeStream));
return {
success: 1,
fullPath: savepath,
url: SaveFileName+"/" + filename,
msg: "上传成功"
};
} catch (error) {
app.CoreAPI.Log.info("upLoadPhotoFile:" + error);
return { success: 0, msg: "上传失败" };
}
}