错误:ENOENT:没有这样的文件或目录,

时间:2019-04-20 20:14:00

标签: node.js express

当我尝试上传图像并通过邮递员保存在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

4 个答案:

答案 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);
        }
    });