【发布时间】:2023-01-05 19:38:14
【问题描述】:
因此,当用户将文件上传到消息时,它会将文件放入:
CDN/attachments/ chatid / userid / date / the file
这mkdir同步如果我这样使用它,功能就可以工作:testfolder。
我的猜测,它不起作用,因为名为附件、用户 ID 等不存在。
有什么办法让它发挥作用吗?谢谢!
这是我的代码:
@Post("uploadImg")
@UseInterceptors(
AnyFilesInterceptor({
storage: diskStorage({
destination: function (req: any, file, cb) {
console.log(req.body , file, cb)
if (existsSync(`CDN/attachments/${req.body.dest}`)) {
console.log('Directory exists!')
} else {
console.log("CREATE")
mkdirSync(`CDN/attachments/${req.body.dest}`)
}
// var newAbsoluteDir = `CDN/attachments/${req.body.dest}`;
// console.log(req.body)
// cb(null, newAbsoluteDir);
},
filename: function (req, file, cb) {
cb(null, file.originalname + '-' + Date.now() + ".png");
},
}),
})
)
async uploadedFile(@UploadedFiles() file) {
console.log(file)
// console.log(file)
// return file;
}
错误:
Error: ENOENT: no such file or directory, mkdir 'CDN/attachments/63aea8c5e37c6b1242a6973f/63aea86fe37c6b1242a6970a/20230105/'
at mkdirSync (node:fs:1381:3)
at DiskStorage.destination [as getDestination] (C:\Users\alms\Desktop\Chatenium2\chatenium-server\src\chat\message\dm\dm.controller.ts:52:22)
at DiskStorage._handleFile (C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\multer\storage\disk.js:31:8)
at C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\multer\lib\make-middleware.js:137:17
at allowAll (C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\multer\index.js:8:3)
at Multipart.<anonymous> (C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\multer\lib\make-middleware.js:107:7)
at Multipart.emit (node:events:513:28)
at HeaderParser.cb (C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\busboy\lib\types\multipart.js:358:14)
at HeaderParser.push (C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\busboy\lib\types\multipart.js:162:20)
at SBMH.ssCb [as _cb] (C:\Users\alms\Desktop\Chatenium2\chatenium-server\node_modules\busboy\lib\types\multipart.js:394:37)
【问题讨论】: