从Busboy流计算字节数

时间:2015-10-13 19:51:03

标签: node.js stream busboy

我从Busboy获取文件流然后我需要计算字节数,抓住第一行然后将其发送到azure存储。它适用于最大约25MB的文件,但之后不计算所有字节。我不知道如何让它等待。当我得到第一行时,我正在使用直通流来保存原始数据。

busboy
.on('file', function(fieldname, file, filename, encoding, mimetype) {
    file
    .on('data', function(data) {
        bytes = bytes + data.length;
    })
    .on('end', function() {
        console.log("end");
    })
    .pipe(passthrough)
    .pipe(firstLine)
    .pipe(es.wait(function (err, body) {
        blobService.createBlockBlobFromStream(containter, name, passthrough, bytes, function (error, result) {
            if(error) {
                return sendResponse(error.toString(), res, null);
            }
            sendResponse(null, res, "done");
        });
    }));
})
.on('finish', function() {
    console.log("busboy done");
});

1 个答案:

答案 0 :(得分:0)

如果要将数据传递给blob,createWriteStreamToBlockBlob就是您可能需要的API。

busboy
.on('file', function(fieldname, file, filename, encoding, mimetype) {
  file
  .on('data', function(data) {
    bytes = bytes + data.length;
  })
  .on('end', function() {
    console.log("end");
  })
  .pipe(passthrough)
  .pipe(firstLine)
  .pipe(blobService.createWriteStreamToBlockBlob(containter, name, function (error, result) {
     if(error) {
        return sendResponse(error.toString(), res, null);
     }
     sendResponse(null, res, "done");
  }))
})
.on('finish', function() {
  console.log("busboy done");
});