3

expressapp.jsでuploadDir="./tmp"を定義していますが、後でアクセスするにはどうすればよいですか?

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));

  app.use(express.bodyParser({uploadDir:'./tmp', keepExtensions: true})); // <--

  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});
4

1 に答える 1

3

ミドルウェアへの議論はbodyParser、ミドルウェアに直結します。ExpressミドルウェアはすべてConnectによって提供されるため、Expressについては何も知りません。マルチパートミドルウェアのクロージャでuploadDirキャプチャされます。クロージャーを介して保存され、他の場所に保存されたり、Expressに渡されたりすることはないため、元の値にアクセスする唯一の方法は、最初に渡されたオブジェクトの一部としてアクセスすることです。他の方法はありません。multipartoptions

(コメントで言ったように)から読んでその値にアクセスできるようにしたい場合はapp、個別にそこに設定する必要があります。とはいえ、この方法は少し見苦しく、値を2回設定する必要があることを意味します。

app.set('uploadDir', './tmp');
于 2013-03-22T04:26:32.637 に答える