我想在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>