我知道我可以强制下载特定文件夹中的所有文件或下载具有指定扩展名的所有文件。例如:
<FilesMatch "\.(mp3|avi)$" >
ForceType application/octet-stream
Header add Content-Disposition "attachment"
</FilesMatch>
但是如果在请求网址中给出参数,我想强行下载文件,例如?download=true
。我怎么能这样做?
答案 0 :(得分:0)
能够在纯静态网站上基于URL自定义HTTP标头,而没有任何动态脚本语言及其安全问题,真是太好了。
从理论上讲,只需要“内容处置”“附件”。
将问题和第一条评论中的信息组合在一起对我有用:将下面的行放在包含文件的目录中或上方的.htaccess
中。
<If "%{QUERY_STRING} =~ /download=true/">
ForceType application/octet-stream
Header add Content-Disposition "attachment"
</If>
Expressions in Apache HTTP Server中对此进行了说明,似乎不需要任何特定的Apache模块。
curl -o /dev/null -v https://some.url/example.jpg 2>&1 | grep " Content"
< Content-Length: 1201533
< Content-Type: image/jpeg
curl -o /dev/null -v https://some.url/example.jpg?download=true 2>&1 | grep " Content"
< Content-Length: 1201533
< Content-Type: image/jpeg
curl -o /dev/null -v https://some.url/example.jpg 2>&1 | grep " Content"
< Content-Length: 1201533
< Content-Type: image/jpeg
curl -o /dev/null -v https://some.url/example.jpg?download=true 2>&1 | grep " Content"
< Content-Length: 1201533
< Content-Disposition: attachment
< Content-Type: application/octet-stream
成功!