我对NodeJS很新,并尝试不同的东西。
我能够做的是使用以下代码下载文件:
app.get('/download', function(req, res){
var file = 'public/songs/myfile.mp3';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
res.setHeader('Content-Length', file.length);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
这很有效,现在我试图实现的目标是看是否有可能限制下载速度。就像有人试图下载文件一样,它将以最大1 Mbps的速度下载(例如)。
我已尝试使用此代码:https://gist.github.com/4poc/1454516
当我加载页面时,它似乎无法加载,但我认为问题是
filestream.pipe(limitStream);
由于没有给出任何回应。
如何实施我想做的事情?或者我如何修复我尝试使用的代码?
答案 0 :(得分:1)
req
和res
个对象是流,因此您可以管理响应:
var filestream = fs.createReadStream(file);
filestream.pipe(limitStream).pipe(res);
fwiw:每次拨打pipe()
时,都会收到新的信息流。以上内容与此相同:
var filestream = fs.createReadStream(file);
var throttleStream = filestream.pipe(limitStream);
throttleStream.pipe(res);
这一点很重要,因为它很容易做到这一点,但它不会达到你的预期:
var filestream = fs.createReadStream(file);
filestream.pipe(limitStream);
filestream.pipe(res);