如果有人在这里熟悉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,所以不存在这样的属性。
嘿alessioalex,谢谢你的回应。我可能应该提到我试图跟踪原始读取流(readStream)的数据侦听器,但事实证明它并没有像我期望的那样被暂停(因为它是一个.pipe)。因此,只要系统能够穿透它,原始readStream就会结束,并且实际上并不代表流转到云文件所接收到的数据。 – agentOOjoe 2011-12-21 18:54:03
现在,我尝试了reqStream上的一个数据监听器,我很惊讶地发现它甚至有一个数据监听器(我假设它更像传统节点writeStream,它没有数据监听器)。然而,它表现得很奇怪。它只发出一次这个事件,而data.length总是太小。它看起来只是在上传完成时才发射一次。我会继续看着它。 – agentOOjoe 2011-12-21 18:58:39