如果这里有人熟悉node.js的node-cloudfiles模块,我可以在几个不同的领域使用一些帮助。不幸的是,似乎作者几乎不可能通过他们的github repo(编辑:没关系,有人联系了我,当我有某种准备好的答案时,我会发送更新。)
我将从我最基本的挑战开始:有没有一种方法可以跟踪上传的进度?我已经尝试了很多事情,但是从。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,所以没有这样的属性。
Charlie(该模块的作者)告诉我这是可能的,因为它使用管道,您只需检查从.addFile返回的对象中的数据事件,如下所示:
reqStream.on('data', function () {
/* track progress /*
});
当你需要联系nodejitsu团队的成员时,加入IRC上的#nodejitsu频道,他们真的很活跃。
在写这个答案的时候,还没有一个真正的好方法来获取发送到cloudfiles的文件的上传进度。然而,nodejitsu的一位天才实现了分块上传,在我的例子中,这消除了对进度报告的需要。谢谢布拉德利。