2016-07-05 3 views
0

私は、サーバー側からファイルにログを記録しています。クライアント側では、ファイルをダウンロードする必要があります。下のコードでは、1つのメッセージファイルをダウンロードしているときに、 jsonが無効であるため、クライアントサイドの予期しないトークンにthrow例外を記録します。私はqestionの中でfilesdataがどのように見えるかを追加しました。クライアントにsendFileコンテンツを送信すると、これらのメッセージをjsonオブジェクト[{},{}]としてどのように送信できますか?ファイルから複数行を読み込んでnodejs sendFileを使用して応答を送信すると、オブジェクトを作成する方法は?

app.js

app.get('/file', function (req, res) { 
    var dir = './ditLogs'; 
    var root = path.resolve('./ditLogs'); 
    var fileName = req.query.file_name; 
    var data; 
    fs.readdir(dir, function(err, items) { 
     items.forEach(function(file){ 
      if(fileName === file){ 
       data = file; 
       console.log('DATA',data); 
       res.setHeader('Content-Disposition', 'application/json','attachment; filename=' + data); 
       res.setHeader('Content-type', 'text/plain'); 
       res.sendFile(data, {root: root}); 
      } 
     }); 
    }); 
}); 

FILEDATA

{"level":"info","message":"Test Log messages"} 
{"level":"info","message":"Test Log messages"} 
{"level":"info","message":"Test Log messages"} 

答えて

0

あなたは括弧とカンマと根を置く必要があります。

この例を参照してください:あなたは、それが有効なJSONを必要としますが、私は動的に私はデータの読み取りと送信していたときにことをどのように行うことができます理解していることを、文字列「コンテナ」

+0

を使用することができます

{"logs" : [{"level":"info","message":"Test Log messages"}, {"level":"info","message":"Test Log messages"}, {"level":"info","message":"Test Log messages"} ]} //To resolve your issue. Declare a variable say var container ="{"logs" : ["; //start tag // append the content container += "" + {'level':'info','message':'Test Log1 messages'} + ""; container += "" + {'level':'info','message':'Test Log2 messages'} + ""; container += "]}"; // end tag 

//それはクライアントに – hussain

+0

私の更新された回答を参照してください。 –

関連する問題