PHP 设置 header 强制直接下载文件的方法

有时候当我们要让用户下载一些文件的时候,尤其是图片或者视频文件的时候,会遇到文件直接在浏览器打开预览而没有开始下载的情况。这种情况我们可以考虑通过一些设置来进行强制下载。

首先如果是通过 a 超链接进行下载的话,可以将其进行如下设置

<a href="123456.mp4" download>
<a href="123456.mp4" download="234567.mp4">

这样就不会在新页面打开,而是直接进行下载了。如果使用 PHP 进行输出的话,那么我们可以通过 header 函数进行设置:

@header('Content-Disposition: attachment, filename="文件名"');

这样打开的页面就会直接进行文件下载而并非预览,当然我们也可以通过设置 Content-TypeX-Content-Type-Options 对下载进行更进一步的操作:

@header('Content-Type: application/octet-stream');
@header('Content-Disposition: attachment, filename="文件名"');
@header('X-Content-Type-Options: nosniff');