Как я могу получить доступ к атрибуту uploadDir экспресса?

В express app.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')));
});

1 ответ

Решение

Аргументы для промежуточного программного обеспечения, как bodyParser пройдите прямо к промежуточному программному обеспечению. Все промежуточное программное обеспечение Express предоставляется Connect, поэтому он даже ничего не знает о Express. uploadDir захвачен в multipart закрытие многочастного промежуточного программного обеспечения. Он сохраняется через замыкание и никогда не сохраняется где-либо еще или передается в Express, поэтому единственный способ получить доступ к исходному значению - это получить доступ к нему как к части options Объект изначально передан. Другого пути нет.

Если вы хотите, чтобы это значение было доступно при чтении из app(как вы сказали в своем комментарии), тогда вы должны установить его там отдельно. Тем не менее, этот метод немного уродлив и означает, что вы должны установить значение дважды.

app.set('uploadDir', './tmp');
Другие вопросы по тегам