node.js - 使用 Node.js 将流分块为数据 block

标签 node.js stream

我正在尝试将文件分成数据 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/

相关文章:

javascript - HTTP/2 : stream. 使用 For-Loop 结束

c# - 多次使用 Stream

javascript - 无法解析从 Instagram API 返回的 user_media 对象

php - 如何从单独的脚本轮换 Winston 日志?

javascript - 在开发者控制台的“网络”选项卡上访问或获取文件

Node.js 应用程序级第三方 API 调用速率限制

c# - 从 byte[] 创建 zip 并返回到浏览器

javascript - 如何从客户端的 Node 和 Express 服务器获取完整的错误消息?

javascript - process.stdin 流的可读事件和数据事件有什么区别?

java - 将图像加载到字符串中并在更改图像后保存