📅  最后修改于: 2023-12-03 15:38:46.749000             🧑  作者: Mango
在PHP中,可以使用header()函数来设置响应头信息,从而控制浏览器的行为,实现强制下载文件的功能。
以下是示例代码,可以根据实际需要进行修改:
// 文件路径
$file_path = '/path/to/file';
// 文件名
$file_name = 'example.txt';
// 下载文件
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file_name . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Length: ' . filesize($file_path));
// 输出文件内容
readfile($file_path);
Content-Type
:表示返回的文件类型,该值设置为application/octet-stream
表示二进制流文件类型,通常用于未知文件类型的下载;Content-Disposition
:表示用户收到的文件的名称,以及如何显示该文件;Content-Transfer-Encoding
:表示文件传输的编码格式,通常使用binary
;Accept-Ranges
:表示服务器是否支持文件的断点续传,该值通常设置为bytes
;Cache-Control
、Pragma
、Expires
:这些响应头用于禁止浏览器缓存文件;Content-Length
:表示返回文件的长度,通常使用filesize()
函数获取。在下载文件之前,必须确保需要下载的文件存在并可读。可以使用file_exists()
和is_readable()
函数来验证文件是否存在并可读。
sprintf('%.0f', filesize($file_path))
来代替filesize($file_path)
,否则将导致文件大小计算错误;