Как принудительно загрузить для видео (mp4) файлы на Nginx на основе параметра запроса - PullRequest
0 голосов
/ 18 февраля 2019

Я уже получил эту работу для изображений, но по неизвестным причинам она не работает для видео (mp4).Я добавил расширение mp4, но оно игнорируется.

Мой код;

location ~* ^/.+\.(?:gif|jpe?g|png|mp4)$ {
    autoindex off;
    if ($arg_dl = "1") {
        add_header Content-disposition "attachment; filename=$1";
    }
}

TIA

1 Ответ

0 голосов
/ 18 февраля 2019

Это может быть браузер, обращающий больше внимания на Content-Type, чем заголовок Content-Disposition.Вы можете установить Content-Type на application/octet-stream, чтобы заставить браузер загружать файл.

Правильный способ установки Content-Type - это директивы types и default_type.Но эти директивы не могут появляться внутри блока if.Подробнее см. в этом документе и в этом документе .

Мой обходной путь использует внутренний префикс URI /download/ для реализации дополнительной логики:

location ~* ^/.+\.(?:gif|jpe?g|png|mp4)$ {
    autoindex off;
    if ($arg_dl = "1") {
        rewrite ^(.*)$ /download$1 last;
    }
}
location ^~ /download {
    internal;
    alias /path/to/files;
    types {}
    expires -1;
    default_type application/octet-stream;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...