【问题标题】:sendFile is throwing exception invalid json?sendFile 抛出异常无效的json?
【发布时间】:2016-11-07 17:17:29
【问题描述】:

我正在向客户端发送文件以供下载,但是当我从文件中收到以下数据时,它的抛出异常 json 无效,是否有任何其他方法可以发送文件,如 res.download 并将内容设置为 json。我正在寻找更好的方法来发送文件而不使用 angularJs FileSaver 它应该将对话框填充到浏览器,是否可以使用 nodejs 来实现这一点?

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', 'attachment; filename=' + data);
                res.setHeader('Content-type', 'text/plain');
                res.sendFile(data, {root: root});
            }
        });
    });
 });

Factory.js

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

ctrl.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);
        });

文件.txt

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

【问题讨论】:

  • 你刚刚问过这个questionbunch of times
  • 我问了这个问题,但我认为我需要解释越来越多的标签应该添加更多的说明我提出新问题的原因。

标签: javascript angularjs json node.js express


【解决方案1】:

您收到错误是因为该文件确实不是有效的 JSON。

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

要解析你的文件,你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2012-10-12
    • 2019-03-09
    • 2014-02-23
    • 2016-07-29
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多