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

How to prompt save dialog to download file using angularjs?

本文关键字:下载 文件 对话框 保存 何使用 angularjs 提示      更新时间:2023-09-26

我在服务器中有一个目录,其中包含文件,现在我从客户端发送文件名,并从服务器获取文件,直到该部分工作良好,下面是服务器的响应,现在一旦我收到响应,我想提示用户下载该文件,我试图使用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});
            }
        });
    });
 });

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

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