我正在尝试将文件分成数据 block 。我发现that link工作做得很漂亮,但是当我按以下方式使用上述库时:
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
。您可以在分块流自述文件中阅读以下内容:
Each data chunk is an object with the following fields:
id: number of chunk (starts from 1) data: Buffer with data
你可以这样做:
chunker.on('data', function(dat) {
console.log("Writing chunk to output!")
output.write(dat.data);
console.log(dat);
});
此外,in
是一个流,并且没有定义 length
属性。
关于node.js - 使用 Node.js 将流分块为数据 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951186/