我正在尝试将文件分块为数据块。我发现该链接可以很好地完成工作,但是当我以以下方式使用上述库时:
var in = fs.createReadStream(__dirname+'/try.html'),
chunker = new SizeChunker({
chunkSize: 2048
}),
output;
chunker.on('chunkStart', function(id, done) {
output = fs.createWriteStream('./output-' + id);
console.log("Chunkstart!");
console.log("Input: "+in.length);
done();
});
chunker.on('chunkEnd', function(id, done) {
output.end();
console.log("Chunkend!");
done();
});
chunker.on('data', function(dat) {
console.log("Writing chunk to output!")
output.write(dat.chunk);
console.log(dat.chunk);
});
input.pipe(chunker);
但是我收到此错误:
_stream_writable.js:201 var len = state.objectMode ? 1 : chunk.length; ^ TypeError: Cannot read property 'length' of undefined at writeOrBuffer (_stream_writable.js:201:41) at WriteStream.Writable.write (_stream_writable.js:180:11) at SizeChunker.<anonymous> (/Users/admin/Documents/chunk.js:16:15) at SizeChunker.EventEmitter.emit (events.js:95:17) at SizeChunker.<anonymous> (_stream_readable.js:746:14) at SizeChunker.EventEmitter.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:408:10) at emitReadable (_stream_readable.js:404:5) at readableAddChunk (_stream_readable.js:165:9) at SizeChunker.Readable.push (_stream_readable.js:127:10)
此外,当使用 console.log() 显示时,in.length 是未定义的。任何人都可以帮我解决这个问题吗?提前谢谢。
当您侦听chunker
流上的data
时,dat
参数没有属性chunk
。您可以在分块流自述文件中阅读以下内容:
每个数据区块都是一个具有以下字段的对象:
id:块数(从 1 开始)数据:包含数据的缓冲区
您可以改为执行以下操作:
chunker.on('data', function(dat) {
console.log("Writing chunk to output!")
output.write(dat.data);
console.log(dat);
});
此外,in
是一个流,没有定义length
属性。