如何在从文件读取多行时创建对象并使用nodejs sendFile发送响应?

时间:2016-07-05 16:23:55

标签: javascript json node.js

我正在从其中一个服务器将消息记录到文件中,现在对于客户端,他们需要下载文件,所以在下面的代码中我发送文件内容以便在下载单个消息文件时下载但是当它的多个消息时在文件中它在客户端意外令牌上抛出异常因为json无效,我在我的qestion中添加了filesdata的样子。当我向客户端发送文件内容时,如何将这些消息作为json对象[{},{}]发送?

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"}

1 个答案:

答案 0 :(得分:0)

你应该用逗号括起逗号和root。

见这个例子:

{"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

//然后你可以使用字符串“container”