私はrequest
とnode
ソースで有効な何かを見つけるために数時間を費やし、そして最終的に私には、より正確な感じに異なるアプローチを見つけました。私たちは、drain
イベントとbytesWritten
性質に依存することができます
:
let size = fs.lstatSync(path).size;
let bytes = 0;
request.put({
url: 'https://example.org/api/upload',
body: fs.createReadStream(path).on('data', (chunk) => {
console.log(bytes += chunk.length, size);
})
});
ストリームバッファサイズ:ファイルのバイトの進捗状況に対処する必要がある場合
request.put({
url: 'https://example.org/api/upload',
body: fs.createReadStream(path)
}).on('drain',() => {
console.log(req.req.connection.bytesWritten);
});
。あるいは、それはストリームdata
イベントを使用する方が簡単です65536
バイトであり、読み出し/ドレイン手順は反復して実行される。
node v4.5.0
とrequest v2.74.0
でこれはかなりうまくいくようです。
非常にいいです、ありがとう! – darma
これも探しています。内部API(将来の 'nodejs'バージョンの変更が予想される)のように見えますが、それは唯一の解決策であるようです。 –
これは痛いです。これは唯一のNode.jsソリューションですか?真剣に、なぜNode.jsのHTTP APIへのファイルアップロードの問題がまだ解決されていないのですか? – Sukima