平均JS从系统路径下载文件



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

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

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

是否有其他方法可以使用安全性下载文件?

我们可以使用下面的节点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>

最新更新