Re: Переменная с именем файла

Валентин Бартенев ne at vbart.ru
Tue Aug 14 18:33:51 UTC 2012


On Tuesday 14 August 2012 22:15:56 Михаил Монашёв wrote:
> Здравствуйте.
> 
> > Делается запрос к http://site.ru/path/file.ext?arg=value .
> > 
> > Скажите пожалуйста, в какой внутренней переменной nginx-а будет
> > храниться имя файла с расширением, т.е. "file.ext" .
> > 
> > $request_filename  хранит  путь,  а  мне  нужно только имя файла. Хочу
> > выдать заголовок через add_header примерно так:
> > 
> > add_header      Content-Disposition 'attachment; filename="Prefix
> > $filename"';
> 
> попробовал как временное решение так:
> 
>         map $request_filename $filename {
>                 default "";
>                 "~*([^/]+)\.(gif|jpe?g|png).*?$" " $1.$2";
>         }
> 
> и сделал запрос к site.ru/path/1.png.
> 
> в $filename записалось " $1.$2"  вместо ожидаемых " 1.png" . Что я
> сделал не так?

 1. В правой части можно использовать только одну переменную или строку.
 2. Позиционные выделения в map не поддерживаются.

Правильно:

  map $request_filename $filename {
      default "";
      "~*(?<fn>[^/]+\.(?:gif|jpe?g|png))$" $fn;
  }

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru