2011-12-21 37 views
0

如果有人在这里熟悉node.js的node-cloudfiles模块,我可以在几个不同的领域使用一些帮助。不幸的是,似乎作者几乎不可能通过他们的github回购(编辑:没关系,有人向我伸出手,我会发送更新,当我有一些准备好的答案时。)node-cloudfiles模块 - 有没有方法可以跟踪上传进度

我'我将从最基本的挑战开始:有没有一种方法可以跟踪上传的进度?我尝试了很多东西,但从.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

查理(模块的作者)告诉我,这是可能的,因为它使用的管道,你只检查数据事件从对象从.addFile回来了,就像这样:

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

每当你需要联系nodejitsu团队的成员,加入IRC上的#nodejitsu频道,他们非常活跃。

+0

嘿alessioalex,谢谢你的回应。我可能应该提到我试图跟踪原始读取流(readStream)的数据侦听器,但事实证明它并没有像我期望的那样被暂停(因为它是一个.pipe)。因此,只要系统能够穿透它,原始readStream就会结束,并且实际上并不代表流转到云文件所接收到的数据。 – agentOOjoe 2011-12-21 18:54:03

+0

现在,我尝试了reqStream上的一个数据监听器,我很惊讶地发现它甚至有一个数据监听器(我假设它更像传统节点writeStream,它没有数据监听器)。然而,它表现得很奇怪。它只发出一次这个事件,而data.length总是太小。它看起来只是在上传完成时才发射一次。我会继续看着它。 – agentOOjoe 2011-12-21 18:58:39

0

在编写这个答案的时候,并没有真正的好方法来获取文件发送到云文件的上传进度。然而,其中一个nodejitsu天才实施了分块上传,在我的情况下,这消除了进度报告的需要。谢谢布拉德利。

相关问题