Задать вопрос
ushliy
@ushliy
nix-админ

Как в Nginx переименовывать файл при загрузке?

Господа, выручайте. Есть сайт, есть в нем картинки, есть ресайзилка этих картинок. Линк для ресайза выглядит как site.ru/images/2016/12/22/7c3b090855d3ec4c92722e6d276a8c02.jpg:h250 , т.е. через : задается параметр размера. И все бы ничего, но только при сохранении изображения ему присваивается расширение .jpg-h250.
Пробовал такую конструкцию:
location ~* ^/.+?\.(jpe?g|JPE?G|png|PNG)\:(\d+x\d+|[hw]\d+)$ {
        rewrite ^/(.*)/([^/]+?)\.(jpe?g|JPE?G|png|PNG)\:(\d+x\d+|[hw]\d+)$ /$1/resized-$4/$2.$3 break;
        root /var/www/site/www/static;

        if ($request_filename ~ "^.*/(.+):(.+)$"){
            set $fname $1;
            add_header 'Content-Disposition' 'inline;filename="$fname"';
        }
}

Не помогает. Прошу совета
  • Вопрос задан
  • 259 просмотров
Подписаться 1 Оценить 4 комментария
Решения вопроса 1
ushliy
@ushliy Автор вопроса
nix-админ
Решено.
Теперь при запросе вида site.ru/images/2016/12/22/7c3b090855d3ec4c92722e6d276a8c02.jpg:h250 сначала генерится файл с нужным размером, кладется в папку с именем, соответствующим параметру и потом редиректится по пути вида site.ru/images/2016/12/22/resized-h250/7c3b090855d3ec4c92722e6d276a8c02.jpg
Конфиг выглядит так:
location ~* ^/.+?\.(jpe?g|JPE?G|png|PNG)\:(\d+x\d+|[hw]\d+)$ {
        rewrite ^/(.*)/([^/]+?)\.(jpe?g|JPE?G|png|PNG)\:(\d+x\d+|[hw]\d+)$ /$1/resized-$4/$2.$3 permanent;
        root /var/www/site/www/static;
        try_files $uri @resize_image;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
akzhan
@akzhan
просто измените правило именования файла в nginx, пусть ширина и высота будут подпапками, грубо говоря.

/uploads/640/480/great_trump.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы