MEAN从系统路径下载文件

时间:2016-11-29 12:44:14

标签: angularjs node.js meanjs

我想在MEANJS项目中实现功能,以便从系统路径下载mp3文件

 Example: /usr/local/setup/file.mp3

我想对有效用户进行安全检查,并允许用户下载mp3文件。

有没有其他方法可用于下载具有安全性的文件?

1 个答案:

答案 0 :(得分:0)

我们可以使用下面的节点js函数

var path = require('path');
var fs = require('fs');
app.get('/api/download-music', function(req, res){

var filename = "file.mp3"; 

var filePath = path.join("/usr/local/setup/", filename);

var stat = fs.statSync(filePath);


res.writeHead(200, {
    'Content-Type': 'audio/mp3',
    'Content-Length': stat.size,
    "content-disposition":"attachment; filename="+filename
});

var readStream = fs.createReadStream(filePath);

readStream.on('data', function(data) {
    var flushed = res.write(data);
    // Pause the read stream when the write stream gets saturated
    if(!flushed)
        readStream.pause();
});

res.on('drain', function() {
    // Resume the read stream when the write stream gets hungry 
    readStream.resume();    
});

readStream.on('end', function() {
    readStream
    .pipe(res);   
});


 });

 }

在上面的节点js代码中,我们可以对会话ID进行安全检查。

在角度模板上我们可以在html下面使用:

<a href="/api/download-music" download target="_self">Download</a>