2

これはリクエストのGithubリポジトリからのものです-https ://github.com/mikeal/request

ファイルストリームへの任意の応答をストリーミングできます。

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))

このように変更しました。ここで、largeImageはサードパーティのWebサイトからの絶対URLパスです。

request(largeImage).pipe(fs.createWriteStream('./img/large/demo.jpg'));

しかし、次のエラーが発生します(理由はわかりません)。createWriteStream APIを確認しましたが、正しいようです。「demo.jpg」だけを含めると問題なく動作します。ただし、「demo.jpg」の横にパスを含めると、例外がスローされます。

stream.js:81
      throw er; // Unhandled stream error in pipe.
            ^
Error: ENOENT, open './img/large/demo.jpg'
10 Oct 16:51:02 - [nodemon] app crashed - waiting for file changes before starting...

更新:問題は、 /img/の前に./public/フォルダーを含めなかったことです。

この更新されたコードは正しく機能します。

 request(largeImage).pipe(fs.createWriteStream('./public/img/large/demo.jpg'));
4

1 に答える 1

3

それはすべて大丈夫に見えます。私の推測では、この問題は権限に関連しているか、最初に./img/largeディレクトリを作成する必要があるかもしれません。

詳細情報を取得するには、次のようにします。

var ws = fs.createWriteStream('./img/large/demo.jpg');
ws.on('error', function(err) { console.log(err); });
request(largeImage).pipe(ws);
于 2012-10-10T21:05:51.553 に答える