javascript - 如何结束()文件流

标签 javascript node.js

我收到的一段示例代码有一个奇怪的问题 here ,中心部分是这样的:

server.on('request', function(request, response) {
  var file = fs.createWriteStream('copy.csv');
  var fileSize = request.headers['content-length'];
  var uploadedSize = 0;

  request.on('data', function (chunk) {
    uploadedSize += chunk.length;
    uploadProgress = (uploadedSize/fileSize) * 100;
    response.write(Math.round(uploadProgress) + "%" + " uploaded\n" );
    var bufferStore = file.write(chunk);
    console.log(bufferStore);
    console.log(chunk);

    if(!bufferStore) 
    {
      request.pause();
    }
  });

  file.on('drain', function() {
    request.resume();
  });

  request.on('end', function() {
    response.write('Upload done!');
    response.end();
  });
});

问题是,该过程完成后,文件 copy.csv 不包含任何内容。
我尝试在 request.on('end'-callback) 中添加 file.end(); ,但它没有成功。但是,如果我添加错误上述回调中的代码导致异常,文件编写得很好(尽管这不是最终的解决方案)。

最佳答案

要通知流没有更多 block 可供读取,您只需调用 your_stream.push(null) 即可。您可以阅读有关流和 push(null) from the excellent substack's stream guide 的更多信息.

关于javascript - 如何结束()文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165562/

相关文章:

javascript - 我在 Electron 中不断收到错误 "TypeError: Cannot read property ' originStackTrace' of null"我似乎无法找出原因?

javascript - 获取表中的tr索引

javascript - 如何在html中显示最后更新时间?

node.js - 在Windows10中重新安装node.js后出现“找不到模块 'process-nextick-args' npm错误”

javascript - 插入到数据库进程后的sequelize.js 不退出/关闭

javascript - 停止动画时重置 jQuery 动画

php - Base64 编码的图像未通过 POST 发送

node.js - gulp 中的条件语句

javascript - 如何使用node.js创建一个计算图形曲线下面积的函数?

node.js - 添加计算字段 Mongoose 的最有效方法