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

Михаил Монашёв postmaster at softsearch.ru
Tue Aug 14 19:01:41 UTC 2012


Здравствуйте, Валентин.

>> > Делается запрос к 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;
>   }


Спасибо. Заработало. Жаль справа надо писать $fn без кавычек. Если
взять в кавычки, что значение не подставляется.

И, кстати, переменно с именем файла и расширением и вправду нет?

-- 
С уважением,
 Михаил                          mailto:postmaster at softsearch.ru



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