2017-12-14 15 views
0

指定されたURLのノード要求ライブラリを使用して画像を要求すると、ロードされた画像は完全ではありません。読み込まれたイメージを保存した後、それはhttps://ibb.co/i5xVARノード取得要求応答不完全

のように見えますが、リクエストはエラーなしで終了し、ステータスコード200があります。私にとっては、ssl接続が閉じられているようです。ブラウザやカールのような他のツールは画像を完全に転送します。

const request = require('request'); 
    const r1 = request({ 
     url: 'https://open.hpi.de/files/f1d16619-9813-4d59-96b3-d84908929b23', 
     encoding: 'binary' 
     }, (err, response, body) => { 
     if (err) { 
     console.log(err); 
     return; 
     } 
     // complete file should be loaded 
     // content and body length should match 
     // read ECONNRESET should not be thrown 
     console.log('body length', body.length); 
     console.log('response content length', response.headers['content-length']); 
     }); 
+0

あなたはこれを試すことができます: '' '要求(URL).pipe(fs.createWriteStream(ファイル名)) .on( 'close'、callback); '' ' –

+0

一度にすべてのデータが返されるわけではないので、https://stackoverflow.com/a/12751657/5115872 – wrangler

+0

ファイルシステムへの配管は問題ありませんが、バッファとしての応答が必要です最終的にストリームではありません。 – user3498131

答えて

0

open.hpi.deホストが接続を途中で終了しています。あなたがリクエストにConnection: keep-aliveヘッダを追加することができ、転送が実際に完了するまで、接続は開いたままになります:

const request = require('request'); 
const r1 = request({ 
    url: 'https://open.hpi.de/files/f1d16619-9813-4d59-96b3-d84908929b23', 
    encoding: 'binary', 
    headers: { 
    "Connection": "keep-alive" 
    } 
}, (err, response, body) => { 
    // do the things 
}); 
+0

ありがとう、それはそれ以上のコード変更なしでそれを本当に簡単に解決します。 – user3498131

関連する問題