我收到的一段示例代码有一个奇怪的问题 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/