NodeJS FS出错(writeFile)

时间:2016-11-22 14:30:16

标签: javascript node.js native fs

以下是我管理上传内容的路由器:

fs.readFile(files.photo.path, function (err, data) {
    // Here is the futur name of my file (ex: SERVER_PATH/images/moka/moka22/11/2016_1.jpg)
    var newPath = __dirname + "/images/moka/moka" + new Date().toLocaleDateString() + "_" + Math.floor(Math.random() * 10) + 1 + "." + ext;
    fs.writeFile(newPath, data, function (err) {
      if(err) {
        res.render('error', { error: err, message: "Erreur lors de l'upload"});
      } else {
        // insctructions
        });
      }
    });
  });

当代码被触发时,我有这个错误:

Error: ENOENT: no such file or directory, open 'D:\projects\raspberry\routes\images\moka\moka2016-11-22_91.jpg'
at Error (native)

如果我很好理解fs doc(https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback):

fs.writeFile(theNameOfTheFuturFile, theDataToPutIn, callback);

所以我有点困惑。

对不起我的英语,可能不好,我希望你猜到我的意思:)。

感谢。

1 个答案:

答案 0 :(得分:0)

问题可能是你写的目录不存在。

所以确保它存在:

fs.readFile(files.photo.path, function (err, data) {
    var dirPath = __dirname + "/images/moka/moka";
    if (!fs.existsSync(dirPath)){
        fs.mkdirSync(dirPath);
    }
    ...

或手工完成。