【发布时间】: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