我有一个我正在托管的小型播客源,在我最终将它连接到Downcast后,一切正常,直到我尝试跳过前进/后退。我终于意识到,搜索本身并不是管道流的一部分。我四处寻找,似乎无法找到任何有用的东西。
使用以下代码,我将如何实现搜索?
app.get('/stream/:id', function(req, res) {
if (!req.params.id) {
res.status(404);
res.send("Not found");
}
var filePath = path.join(Config.media, '**' , req.params.id);
filePath = glob.sync(filePath)[0];
var stat = fs.statSync(filePath);
res.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size,
'Accept-Ranges': 'bytes'
});
var readStream = fs.createReadStream(filePath);
readStream.pipe(res);
});
答案 0 :(得分:3)
我实际上可以使用visionmedia/send执行此操作(它也处理了很多关于路径的工作)。
以下是与搜索有关的新代码:
var send = require('send');
...
app.get('/stream/*', function(req, res) {
var path = Url.parse(req.url).pathname.replace('/stream','');
send(req, path)
.root(Config.media)
.on('error', function(err) {
res.statusCode = err.status || 500;
res.end(err.message);
})
.on('directory', function() {
res.statusCode = 403;
res.end("Forbidden");
})
.pipe(res);
});