如何在从文件读取多行时创建对象并使用nodejs sendFile发送响应? [英] How to create object when you read multiples lines from files and send response using nodejs sendFile?

查看:88
本文介绍了如何在从文件读取多行时创建对象并使用nodejs sendFile发送响应?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am logging messages to files from one of the server , now for client side they are required to download files so in below code i am sending file content to download when its a single message file is being downloaded but when its multiple messages in file its throwing exception on client side unexpected token because json is invalid,I added how filesdata look like in my qestion. How can i send these messages as json object [{},{}] when i sendFile content to client ?

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


推荐答案

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

You should put comma and root with braces.

参见这个例子:

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

// you can then use the string "container"

这篇关于如何在从文件读取多行时创建对象并使用nodejs sendFile发送响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆