我已经将其用于图像,但是由于未知原因,它似乎不适用于视频(mp4)。我添加了扩展名mp4,但被忽略了。
我的代码;
location ~* ^/.+\.(?:gif|jpe?g|png|mp4)$ {
autoindex off;
if ($arg_dl = "1") {
add_header Content-disposition "attachment; filename=$1";
}
}
TIA
答案 0 :(得分:0)
这可能是浏览器比Content-Type
标头更关注Content-Disposition
的原因。您可以将Content-Type
设置为application/octet-stream
,以强制浏览器下载文件。
设置Content-Type
的正确方法是使用types
和default_type
伪指令。但是这些指令不能出现在if
块中。有关详细信息,请参见this document和this 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;
}