8

私はexpressjsを使用しています。次のようなことをしたいと思います:

app.post('/bla',function(req,res,next){
   //some code
   if(cond){
      req.forward('staticFile.html');
   }
});
4

4 に答える 4

9

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

于 2013-02-09T13:35:01.120 に答える
1

この方法はあなたのニーズに合っていますか?

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);
      });
   }
});
于 2013-02-09T12:49:39.167 に答える