2

Aはこのコードを持っています:

var http = require('http');
var fs = require('fs');
var data;
var options = {
  host: 'nodejs.org',
  port: 80,
  path: '/images/logo.png',
  method: 'GET'
};
var req = http.request(options, function(res) {
  res.on('data', function (chunk) {
    data += chunk;
  });
  res.on('end', function () {
    fs.writeFile('1.png', data, function (err) {
      if(err) 
        console.log('NNOOOOOOOOOOOO');
    });
  });
});
req.on('error', function(e) {
  console.log('error: ' + e.message);
});
req.end();

このスクリプトはファイル 1.png を作成し、取得したデータを保存しますが、Windows で開くことができません。

助けてください。

4

2 に答える 2

2

あなたはこれを行うことができます :

var req = http.request(options, function(res) {
  var file = fs.createWriteStream('1.png');
  res.pipe(file);
});
req.on('error', function(e) {
  console.log('error: ' + e.message);
});
req.end();

アップデート

コードを確認したところ、次の 2 つのことがわかりました。

  1. dataが正しく初期化されていません。
  2. setEncoding を使用して、応答をバイナリとして扱います。エンコーディングを指定する必要はありませんwriteFile

したがって、http.requestcallback の先頭に次の 2 行を追加するだけです。

  res.setEncoding("binary") ;
  var data='';

その後、コードは正常に動作するはずです。

于 2013-05-31T15:14:05.373 に答える