当你从文件中读取多行并使用nodejs sendFile发送响应时,如何创建对象

How to create object when you read multiples lines from files and send response using nodejs sendFile?

本文关键字:响应 sendFile 创建对象 nodejs 文件 读取 当你      更新时间:2023-09-26

我正在从一个服务器记录消息到文件,现在对于客户端,他们需要下载文件,所以在下面的代码中,我正在发送文件内容下载,当它的单个消息文件被下载,但是当它的多个消息在文件中抛出异常在客户端意外令牌,因为json是无效的,我添加了如何文件数据看起来像我的问题。我如何发送这些消息作为json对象[{},{}]当我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"}

你应该把逗号和根用大括号括起来。

请看下面的例子:

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