Javascript 在多部分请求节点js中动态创建文件夹和上载文件

Javascript 在多部分请求节点js中动态创建文件夹和上载文件,javascript,node.js,express,multer,Javascript,Node.js,Express,Multer,我正在尝试在用户加载文件时动态创建文件夹(这是因为我需要单独存储每个用户文件,以便在删除文件时不会发生冲突),并在我的计算机中创建文件路径,以便将其存储在数据库的多对多关系表中(用户可以有许多文件,许多文件可以属于不同的用户,这就是为什么我不能将它们存储在一起)但我无法用当前的逻辑实现这一点。我可以用时间戳创建不同的名称,但这会变得混乱 我正在使用multer和Express。发送的表单数据就是附加图像上的数据 const express=require('express'); 常量app=

我正在尝试在用户加载文件时动态创建文件夹(这是因为我需要单独存储每个用户文件,以便在删除文件时不会发生冲突),并在我的计算机中创建文件路径,以便将其存储在数据库的多对多关系表中(用户可以有许多文件,许多文件可以属于不同的用户,这就是为什么我不能将它们存储在一起)但我无法用当前的逻辑实现这一点。我可以用时间戳创建不同的名称,但这会变得混乱

我正在使用
multer
Express
。发送的表单数据就是附加图像上的数据

const express=require('express');
常量app=express();
const multer=require('multer');
const bodyParser=require('body-parser');
常数fs=要求('fs');
use(bodyParser.json());
use(bodyParser.urlencoded({extended:false}));
let storage=multer.diskStorage({
目标:功能(请求、文件、cb){
//req.body为空
let path=`./public/uploads/${req.body.id}`;
如果(!fs.existsSync(路径)){
fs.mkdirSync(filesDir);
}
cb(空,路径);
},
文件名:函数(请求、文件、cb){
cb(空,`${file.originalname}`)
}
})
let upload=multer({storage:storage});
var cpUpload=upload.fields([{name:'file',maxCount:1},{name:'id'}]);
router.post('/uploadSingFile',cpUpload,(req,res)=>{
控制台日志(req.body);req.body正常
res.send({状态:200});

});
您可以对文件名使用新生成的
uuid
,使其在文件夹中唯一。对于文件夹名,不要从请求正文(
req.body.id
)获取,而是使用类似于
userId
的内容,以确保文件夹属于特定用户