如何根据查询参数在Nginx上强制下载视频(mp4)文件

时间:2019-02-18 10:52:42

标签: nginx video download

我已经将其用于图像,但是由于未知原因,它似乎不适用于视频(mp4)。我添加了扩展名mp4,但被忽略了。

我的代码;

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

TIA

1 个答案:

答案 0 :(得分:0)

这可能是浏览器比Content-Type标头更关注Content-Disposition的原因。您可以将Content-Type设置为application/octet-stream,以强制浏览器下载文件。

设置Content-Type的正确方法是使用typesdefault_type伪指令。但是这些指令不能出现在if块中。有关详细信息,请参见this documentthis document

我的解决方法使用内部/download/的URI前缀来实现其他逻辑:

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;
}