sendFile抛出异常无效的json?

时间:2016-07-05 18:57:57

标签: javascript angularjs json node.js express

我正在向客户端发送文件进行下载,但是当我从文件接收到以下数据时,其抛出异常json无效,是否有其他方法可以发送文件,如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', 'attachment; filename=' + data); res.setHeader('Content-type', 'text/plain'); res.sendFile(data, {root: root}); } }); }); }); 并将内容设置为json。我正在寻找更好的方法来发送文件而不使用angularJs FileSaver它应该填充对话框浏览器,是否可以使用nodejs实现这一点?

app.js

 getFile:function(file_name){
            return $http.get("/file?file_name="+file_name);
        }

Factory.js

$scope.downloadFile = function(message){
        DitFactory.getFile(message).then(function(response,$window){
            var data = JSON.stringify(response.data);
            var blob = new Blob([data], { type: 'text/plain;charset=utf-8' });
            FileSaver.saveAs(blob, 'text.txt');
            console.log(response.data.level);
        });

ctrl.js

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

file.txt的

{{1}}

1 个答案:

答案 0 :(得分:1)

您收到错误,因为该文件确实无效JSON。

您需要解析文件并转换为数组,或者以纯文本格式发送文件,并将其原样传递给文件保护程序。

要解析文件,您可以执行以下操作:

data.split('\n').reduce(function (result, x) {
  x = x.trim();
  if (x) {
    result.push(x);
  }
  return result;
}, [])