私はexpressjsを使用しています。次のようなことをしたいと思います:
app.post('/bla',function(req,res,next){
//some code
if(cond){
req.forward('staticFile.html');
}
});
Vadimが指摘したように、res.redirectを使用してクライアントにリダイレクトを送信できます。
(コメントが示唆しているように)クライアントに戻らずに静的ファイルを返したい場合、1つのオプションは、__dirnameを使用して構築した後にsendfileを呼び出すことです。以下のコードを別のサーバーリダイレクトメソッドに組み込むことができます。また、パスをログアウトして、期待どおりのパスであることを確認することもできます。
filePath = __dirname + '/public/' + /* path to file here */;
if (path.existsSync(filePath))
{
res.sendfile(filePath);
}
else
{
res.statusCode = 404;
res.write('404 sorry not found');
res.end();
}
参考のためのドキュメントは次のとおりです:http://expressjs.com/api.html#res.sendfile
この方法はあなたのニーズに合っていますか?
app.post('/bla',function(req,res,next){
//some code
if(cond){
res.redirect('/staticFile.html');
}
});
もちろんstatic
、このサンプルを機能させるには、express/connect ミドルウェアを使用する必要があります。
app.use(express.static(__dirname + '/path_to_static_root'));
アップデート:
また、ファイルのコンテンツを単純にストリームして応答することもできます。
var fs = require('fs');
app.post('/bla',function(req,res,next){
//some code
if(cond){
var fileStream = fs.createReadStream('path_to_dir/staticFile.html');
fileStream.on('open', function () {
fileStream.pipe(res);
});
}
});