如何使用angularjs提示保存对话框下载文件?

时间:2016-07-01 18:34:16

标签: javascript angularjs express

我在服务器中有一个包含文件的目录我现在从客户端发送文件名并从服务器获取文件,直到该部分工作正常,下面是服务器的响应现在一旦我收到响应我想提示用户下载该文件我试图使用Angularjs创建blob但它没有提示用户保存文件。有什么想法吗?

ctrl.js

$scope.downloadFile = function(message){
        DitFactory.getFile(message).then(function(response){
            console.log('r',response);
            var blob = new Blob([ response ], { type : 'text/plain' });
            $scope.url = (window.URL || window.webkitURL).createObjectURL( blob );
            console.log($scope.url);
        });
    };

serverResponse.json

{"level":"info","message":"another-2fdas  message"}

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

1 个答案:

答案 0 :(得分:0)

如果您使用快递,可以在 server.js 文件中尝试以下代码:

var file = 'path to your file';      
res.download(file,function(err){
    if(!err){
      console.log('prompted successfully');
      return;
  }
});