node-cloudfiles模块 - 有没有办法跟踪上传进度

时间:2011-12-21 00:12:58

标签: node.js stream cdn cloudfiles

如果这里有人熟悉node.js的node-cloudfiles模块,我可以在几个不同的领域使用一些帮助。不幸的是,似乎作者几乎不可能通过他们的github回购达成(编辑:没关系,有人确实联系到我,当我准备好某种答案时,我会发送更新。)

我将从最基本的挑战开始:有没有办法跟踪上传的进度?我尝试了很多东西,但是从.addFile命令返回的对象似乎没有任何进度统计数据。

以下是我正在使用的基本概要。

var readStream = fs.createReadStream(path+'.'+extension, streamopts);
var upOpts = {
    headers: {
        'content-type': 'video/'+extension,
        'content-length': totalBytes
    },
    remote: CDNfilename, 
    stream: readStream
};

//reqStream is the object returned from the 'request' module, 
//which is used by the 'cloudfiles' module.
var reqStream = cloudClient.addFile(Container.name, upOpts, function (err, uploaded) {
    if (err) { console.log(err); }

});

起初我以为我可以使用连接到间隔计时器的.bytesWritten属性,但该对象不是普通节点writeStream,因此没有这样的属性。

2 个答案:

答案 0 :(得分:2)

Charlie(模块的作者)告诉我这是可能的,因为它使用了一个管道,你只需检查从.addFile返回的对象的数据事件,如下所示:

reqStream.on('data', function () { 
  /* track progress /* 
});

每当你需要联系来自nodejitsu团队的人时,加入IRC上的#nodejitsu频道,他们真的很活跃。

答案 1 :(得分:0)

在撰写此答案时,没有一种很好的方法可以获得发送到云文件的文件的上传进度。然而,其中一个nodejitsu天才实现了分块上传,在我的情况下,它不需要进度报告。谢谢布拉德利。