2017-02-04 7 views
0

nodejsとbusboyを使用してjsonエンコードファイルを受信して​​います。今、私はこのファイルを読んでコンソールに出力したいと思っています。nodejsでPOSTリクエストで受信したファイルをコンソールに出力

あなたが得ることができるコールバック「file.on( 『データ』)」に

router.addRoute('/', function (req, res, params) { 
    if (req.method === 'POST') { 

     var busboy = new Busboy({ headers: req.headers }); 

     busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { 
     console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype); 

      // We are streaming! Handle chunks 
      file.on('data', function (data) { 
     //read file 
      }); 

      // Completed streaming the file. 
      file.on('end', function() { 
       console.log('Finished with ' + fieldname); 
      }); 
     }); 

     // Listen for event when Busboy is finished parsing the form. 
     busboy.on('finish', function() { 
      res.statusCode = 200; 
      res.end(); 
     }); 

     req.pipe(busboy); 
    } 
}); 
+0

このコードは正常です。それについては何ができませんか? (あなたは 'console.log(data);'を意味しましたか?)チャンクを連結したいですか? – Ryan

+0

私の質問のように見えませんでした。私はファイルを受け取っています、これまではとても良いです。今ではファイルの内容を平文で印刷したいと考えています。コールバックのデータは<バッファ5b 7b ... – Christian

+1

'file.pipe(process.stdout);'?バッファオブジェクトを必要なフォーマットにデコードすることもできます。 'console.log(data.toString( 'utf8'));' – Ryan

答えて

0

..私は、これは簡単なはずと思い、何とか私はファイル全体を読み込んで印刷する方法を得ることはありませんファイルの内容を文字列として返します。

router.addRoute('/', function (req, res, params) { 
    if (req.method === 'POST') { 

     var busboy = new Busboy({ headers: req.headers }); 

     busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { 
     console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype); 

      // We are streaming! Handle chunks 
      file.on('data', function (data) { 
      console.log(data); 
      }); 

      // Completed streaming the file. 
      file.on('end', function() { 
       console.log('Finished with ' + fieldname); 
      }); 
     }); 

     // Listen for event when Busboy is finished parsing the form. 
     busboy.on('finish', function() { 
      res.statusCode = 200; 
      res.end(); 
     }); 

     req.pipe(busboy); 
    } 
}); 

不完全なストリーミングデータとなる場合は、 file.on( 'end')コールバックとグローバル変数が必要な場合、file.on( 'data')はファイルの内容の一部でファイルが完了するまで毎回トリガーします。下記を参照してください。

router.addRoute('/', function (req, res, params) { 
    if (req.method === 'POST') { 
     var wholeData = ''; 
     var busboy = new Busboy({ headers: req.headers }); 

     busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { 
     console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype); 

      // We are streaming! Handle chunks 
      file.on('data', function (data) { 
      wholeData+=data; 
      }); 

      // Completed streaming the file. 
      file.on('end', function() { 
       console.log('Finished with ' + fieldname); 
       console.log(wholeData); 
      }); 
     }); 

     // Listen for event when Busboy is finished parsing the form. 
     busboy.on('finish', function() { 
      res.statusCode = 200; 
      res.end(); 
     }); 

     req.pipe(busboy); 
    } 
}); 
関連する問題