使用Node.js将数据块分块成数据块

我正在尝试将文件分块成数据块。 我发现这个链接很好地完成了这项工作,但是当我按照以下方式使用上述库时:

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是未定义的。 任何人都可以请帮我解决这个问题? 提前致谢。

当您在chunkerstream上监听data时, dat参数没有属性chunk 。 您可以阅读chunking-stream自述文件:

每个数据块都是包含以下字段的对象:

id:块的数量(从1开始)data:带有数据的缓冲区

你可以这样做,而不是:

 chunker.on('data', function(dat) { console.log("Writing chunk to output!") output.write(dat.data); console.log(dat); }); 

另外, in是一个stream,没有定义length属性。