Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js node cloudfiles模块-是否有跟踪上载进度的方法_Node.js_Stream_Cdn_Cloudfiles - Fatal编程技术网

Node.js node cloudfiles模块-是否有跟踪上载进度的方法

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+'

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

我将从我最基本的挑战开始:有没有办法跟踪上传的进度?我尝试了很多方法,但是从.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); }

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

Charlie(模块的作者)告诉我,这是可能的,因为它使用管道,您只需检查从.addFile返回的对象中的数据事件,像这样:

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

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

在撰写此答案时,没有一个好方法可以获得发送到cloudfiles的文件的上传进度。然而,nodejitsu的一位天才实现了分块上传,在我的例子中,这消除了对进度报告的需要。谢谢布拉德利。

嘿,亚历克斯,谢谢你的回复。我可能应该提到,我曾尝试跟踪原始读取流(readStream)的数据侦听器,但结果它没有像我预期的那样暂停(因为它是一个.pipe)。正因为如此,系统一打开原始的readStream,它就结束了,实际上并不代表流接收到的数据,而是进入cloudfiles。现在,我在reqStream上尝试了一个数据侦听器,我非常惊讶地看到它甚至有一个数据侦听器(我假设它更像是一个传统的节点writeStream,它没有数据侦听器)。但是,它的行为有点奇怪。它只发出一次此事件,并且data.length总是太小。当上载完成时,它看起来只发出一次。不过我会继续查看它。