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