Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 巴士司机和GridFS赢了';无法将文件保存到文件系统_Javascript_Node.js - Fatal编程技术网

Javascript 巴士司机和GridFS赢了';无法将文件保存到文件系统

Javascript 巴士司机和GridFS赢了';无法将文件保存到文件系统,javascript,node.js,Javascript,Node.js,调用以下POST API时,应将文件保存到文件系统。但是,未保存该文件。我可以在控制台中看到该文件,但无法保存/写入它。 我有以下代码: router.post('/notes', function(req, res, next) { var gfsstream, startFileWrite, endFileWriteTime; var busboy = new Busboy({ headers: req.headers }); busboy.on('file', functio

调用以下POST API时,应将文件保存到文件系统。但是,未保存该文件。我可以在控制台中看到该文件,但无法保存/写入它。 我有以下代码:

router.post('/notes', function(req, res, next) {
  var gfsstream, startFileWrite, endFileWriteTime;
  var busboy = new Busboy({ headers: req.headers });

  busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
    startFileWrite = new Date().getTime();
    console.log('File [' + fieldname + ']: filename: ' + filename);

    gfsstream = gfs.createWriteStream('/uploads');
    file.on('data', function(data) {
      gfsstream.write(data);
    });
    file.on('end', function() {
      gfsstream.end();
      req.pipe(gfsstream);
    });
    gfsstream.on('close', function (file) {
      // do something with `file`
     endFileWrite = new Date().getTime();
     console.log('File [' + fieldname + '] Finished');
     console.log("Time needed: " + (endFileWrite - startFileWrite) + " ms");
    });
  });

  busboy.on('error', function(err) {
    console.error(err);
    res.sendStatus(500, 'ERROR', err);
  });

  busboy.on('finish', function end() {
    res.sendStatus(200);
  });
  req.pipe(busboy);
});
req.pipe(gfsstream)
可能是这里的问题,但我不确定是什么阻止了文件的保存。

只需执行
file.pipe(gfsstream)
并使用
finish
事件而不是
close
事件:

busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
  startFileWrite = new Date().getTime();
  console.log('File [' + fieldname + ']: filename: ' + filename);

  gfsstream = gfs.createWriteStream('/uploads');
  file.pipe(gfsstream).on('finish', function() {
    endFileWrite = new Date().getTime();
    console.log('File [' + fieldname + '] Finished');
    console.log("Time needed: " + (endFileWrite - startFileWrite) + " ms");
  });
});