2011-12-21 8 views
0

ここに誰もnode.jsのnode-cloudfilesモジュールをよく知っていたら、いくつかの異なる分野でいくつかの助けをすることができます。残念なことに、著者はgithubリポジトリを介して到達することはほとんど不可能であるようです(EDIT:誰かが私に手を差し伸べてくれました。何らかの回答があったときにアップデートを送っています)。node-cloudfiles module - アップロードの進捗状況を追跡する方法はありますか?

I '私の最も基本的な挑戦から始めましょう:アップロードの進行状況を追跡する方法はありますか?私は多くのことを試しましたが、.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

+0

reqStreamでデータリスナーを試しましたが、データリスナー(これはデータリスナーを持たない従来のノードwriteStreamのように思っていました)を持っていることにも驚いています。しかし、それは奇妙なことをしている。このイベントは1回だけ発生し、data.lengthは常に小さすぎます。アップロードが完了すると、1回だけ放出されるようです。私はそれを見て続けます。 – agentOOjoe

0

この回答を書いている時点では、クラウドファイルに送信されているファイルのアップロードの進捗状況を確認する良い方法はありません。しかし、ノードジスの天才の一人がチャンクアップロードを実装しました。私の場合は、進捗報告の必要性が排除されています。ブラッドリーに感謝します。

関連する問題