Node.js node cloudfiles模块-是否有跟踪上载进度的方法
如果这里有人熟悉node.js的node cloudfiles模块,我可以在几个不同的领域使用一些帮助。不幸的是,作者似乎几乎不可能通过他们的github repo联系到我(编辑:nevermind,有人联系过我,我会在准备好某种答案后发送更新。) 我将从我最基本的挑战开始:有没有办法跟踪上传的进度?我尝试了很多方法,但是从.addFile命令返回的对象似乎不包含任何类型的进度统计信息 这里是我工作的基本概要Node.js node cloudfiles模块-是否有跟踪上载进度的方法,node.js,stream,cdn,cloudfiles,Node.js,Stream,Cdn,Cloudfiles,如果这里有人熟悉node.js的node cloudfiles模块,我可以在几个不同的领域使用一些帮助。不幸的是,作者似乎几乎不可能通过他们的github repo联系到我(编辑:nevermind,有人联系过我,我会在准备好某种答案后发送更新。) 我将从我最基本的挑战开始:有没有办法跟踪上传的进度?我尝试了很多方法,但是从.addFile命令返回的对象似乎不包含任何类型的进度统计信息 这里是我工作的基本概要 var readStream = fs.createReadStream(path+'
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); }
});
起初,我认为可以使用连接到间隔计时器的.BytesWrite属性,但该对象不是普通的节点writeStream,因此没有此类属性。Charlie(模块的作者)告诉我,这是可能的,因为它使用管道,您只需检查从.addFile返回的对象中的数据事件,像这样:
reqStream.on('data', function () {
/* track progress /*
});
每当你需要联系nodejitsu团队的人时,加入IRC上的#nodejitsu频道,他们都非常活跃。在撰写此答案时,没有一个好方法可以获得发送到cloudfiles的文件的上传进度。然而,nodejitsu的一位天才实现了分块上传,在我的例子中,这消除了对进度报告的需要。谢谢布拉德利。嘿,亚历克斯,谢谢你的回复。我可能应该提到,我曾尝试跟踪原始读取流(readStream)的数据侦听器,但结果它没有像我预期的那样暂停(因为它是一个.pipe)。正因为如此,系统一打开原始的readStream,它就结束了,实际上并不代表流接收到的数据,而是进入cloudfiles。现在,我在reqStream上尝试了一个数据侦听器,我非常惊讶地看到它甚至有一个数据侦听器(我假设它更像是一个传统的节点writeStream,它没有数据侦听器)。但是,它的行为有点奇怪。它只发出一次此事件,并且data.length总是太小。当上载完成时,它看起来只发出一次。不过我会继续查看它。