当我尝试上传图像并通过邮递员保存在public / upload_files文件夹中时,它显示此错误
节点-v v10.15.3
npm -v 6.9.0
“错误:ENOENT:没有这样的文件或目录”
这是我的代码
const express = require('express');
const router = express.Router();
const multer = require('multer');
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null,'./public/uploaded_files');
},
filename: function(req, file, cb) {
cb(null,new Date().toISOString() + file.originalname);
}
});
const upload = multer({storage:storage});
router.post('/', upload.single('file'), (req,res,next) => {
console.log(req.file);
});
module.exports = router;
我只是想将图像保存在以下文件夹public / upload_files
答案 0 :(得分:1)
使用
cb(null, Date.now() + file.originalname);
代替
cb(null, new Date().toISOString() + file.originalname);
防止
"error": "ENOENT: no such file or directory
答案 1 :(得分:0)
我对我的代码进行了很少的更改,并且花了9个小时才起作用
我添加了这一行
cb(null,path.join(__dirname,'../upload'))
还有这个
cb(null,Date.now() + path.extname(file.originalname))
代码
var storage = multer.diskStorage({
destination: function(req, file, cb)
{
cb(null,path.join(__dirname,'../upload'))
},
filename: function(req, file, cb)
{
cb(null,Date.now() + path.extname(file.originalname))
}
});
答案 2 :(得分:0)
可能是由于禁止的文件名或操作系统操作。您是否在其他操作系统上运行过该程序?例如:某些操作系统不允许使用新的Date()。toISOString()函数产生的带有某些特殊字符的文件名。 另外:我认为这段代码来自Max的Node js课程。
答案 3 :(得分:-1)
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, './public/uploaded_files');
},
filename: function(req, file, cb) {
// cb(null, new Date().toISOString() + file.originalname) // this is wrong
cb(null, Date.now() + file.originalname);
}
});