推荐答案
在PHP中,可以通过以下步骤实现文件下载:
- 设置HTTP头信息,指定文件的MIME类型和下载方式。
- 读取文件内容并输出到浏览器。
// www.javascriptcn.com code example
<?php
$file = 'path/to/your/file.ext'; // 文件路径
$filename = 'downloaded_file.ext'; // 下载时显示的文件名
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
} else {
echo "文件不存在!";
}
?>本题详细解读
1. 设置HTTP头信息
Content-Description: File Transfer:描述内容为文件传输。Content-Type: application/octet-stream:指定文件的MIME类型为二进制流,适用于所有文件类型。Content-Disposition: attachment; filename="downloaded_file.ext":指定文件以附件形式下载,并设置下载时显示的文件名。Expires: 0:设置缓存过期时间为0,确保文件不会被缓存。Cache-Control: must-revalidate:强制浏览器重新验证缓存。Pragma: public:允许公共缓存。Content-Length: filesize($file):指定文件的大小。
2. 读取文件内容并输出
readfile($file):读取文件内容并输出到浏览器。这个函数会自动处理文件读取和输出,适用于大文件下载。
3. 文件存在性检查
file_exists($file):在尝试下载文件之前,检查文件是否存在。如果文件不存在,输出错误信息。
4. 退出脚本
exit:在文件下载完成后,立即退出脚本,避免后续代码执行影响下载。