【问题标题】:How to check for errors with Azure Blob createReadStream?如何检查 Azure Blob createReadStream 的错误?
【发布时间】:2018-11-30 04:21:57
【问题描述】:

当容器和文件存在时,这段代码可以正常工作,但没有错误检查:

function downloadFile(req, res){

  var container = 'aaa';
  var file = 'bbb';

  var stream = blobService.createReadStream(container, file);

  stream.pipe(res);

}

我想使用流事件添加错误检查代码,但是当我将管道放入 data 事件时,它永远不会被调用并且响应永远不会返回。如果我把它放到end 事件中,管道会发送一个长度为零的流。

function downloadFile(req, res){

  var container = 'aaa';
  var file = 'bbb';

  var stream = blobService.createReadStream(container, file);

  stream.on('error', function(data){
    res.status(400).send({"message": "could not retrieve file"});
  });

  stream.on('data', function(data){
    stream.pipe(res);
  });

}

我怎样才能正确连接它以便对流进行错误检查?

【问题讨论】:

    标签: node.js azure azure-storage azure-blob-storage


    【解决方案1】:

    您已正确设置错误事件,只需删除数据事件并简单地使用stream.pipe(res);。事情对我有利。

    我得到的结果与你的相反,一旦我使用数据事件,stream 将其内容传递给data,因此它没有任何东西(零长度流)可写入res。而data 的类型是缓冲区(或字符串),没有像pipe 这样的方法。

    当流中没有数据要消费时会触发end事件,所以如果我们把消费操作放在里面就不会被调用。

    因此无需为stream.pipe(res); 显式添加事件。详情请查看nodejs stream events

    【讨论】:

      猜你喜欢
      • 2018-11-30
      • 1970-01-01
      • 2017-10-03
      • 2012-06-17
      • 2021-11-08
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2021-07-09
      相关资源
      最近更新 更多