8

expressjsのsendfileを使用して、スクリプトファイルの親ディレクトリからファイルを送信したいと思います。私がやろうとしたことはこれです:

app.get('/', function(req, res){
    res.sendfile('../../index.html');
});

どうやら、sendfileはパストラバーサルを信頼していないため、禁止されたエラーが発生します。これまでのところ、sendfileを介して送信されるファイルのディレクトリを変更する方法を理解できませんでした。ヒントはありますか?

編集:これを投稿するとき、私はちょっと疲れていました、実際、それはちょっと簡単です。他の誰かがこれに遭遇した場合に備えて、ここに残しておきます。次のように、sendfileのオプションパラメータを使用して、それを実行できます。

app.get( '/', function( req, res ){
    res.sendfile('index.html', { root: "../../"});
});
4

3 に答える 3

9

の2番目のパラメータとしてrootについて言及する必要がありますsendfile()

例えば:

app.get('/:dir/:file', function(req, res) {
  var dir = req.params.dir,
      file = req.params.file;

  res.sendfile(dir + '/' + file, {'root': '../'});
});

詳細については、 https: //github.com/visionmedia/express/issues/1465をご覧ください。

于 2014-03-11T21:08:21.397 に答える
4

を使用する必要がありますexpress.static

次のディレクトリが設定されているとします。

/app
   /buried
       /deep
           server.js
   /public
       index.html

次に、次のExpress構成が必要です。

var express = require('express');
var server = express.createServer();
server.configure(function(){
    server.use(express.static(__dirname + '../../public'));
});
server.listen(3000);

res.sendfileクライアントへのファイルの「きめ細かい」転送を目的としています。たとえば、APIドキュメントを参照してください

于 2013-03-22T16:05:29.810 に答える
2

親フォルダ:-app -routes.js -index.html上記の場合、routes.jsに次のコードを追加して、親ディレクトリからファイルを送信します。

var path=require("path") //assuming express is installed 

app.get('/', function(req, res){
res.sendFile(path.join(__dirname + '/../index.html'));
});
于 2016-01-12T07:26:53.617 に答える