当用户需要下载服务器上存储的文件时,可以使用 PHP 的 header() 函数实现文件下载功能。以下是实现文件下载的完整攻略:
步骤一:创建下载链接
在 HTML 页面中创建一个下载链接,该链接指向一个 PHP 下载文件的脚本,如下所示:
<a href="download.php?filename=example.docx">Download example.docx</a>
此处假设要下载的文件为 example.docx。
步骤二:编写下载脚本
在服务器上创建一个 PHP 文件(如 download.php),该文件接收文件名参数,并使用 header() 函数实现下载功能,如下所示:
<?php
$filename = $_GET['filename'];
if (file_exists($filename)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
} else {
exit('File not found');
}
?>
该脚本读取文件名参数,检查该文件是否存在。如果文件存在,则设置必要的 header 响应头,包括:
Content-Type
:文件类型。使用 application/octet-stream 表示文件是二进制流(Binary Stream)。Content-Disposition
:文件的属性。attachment 表示以附件(Attachment)形式下载文件。filename 表示文件名,使用 basename() 函数获取文件名。Content-Length
:文件的大小。使用 filesize() 函数获取文件大小(单位:字节)。Content-Transfer-Encoding
:文件传输编码。使用 binary 表示二进制编码传输。Expires
,Cache-Control
,Pragma
:禁止浏览器缓存。
最后使用 readfile() 函数将文件读取出来并输出到浏览器,然后结束脚本运行。
示例一:下载文本文件
以下是一个示例,我们下载一个文本文件 test.txt。
HTML 代码:
<a href="download.php?filename=test.txt">Download test.txt</a>
download.php 代码:
<?php
$filename = $_GET['filename'];
if (file_exists($filename)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
} else {
exit('File not found');
}
?>
示例二:下载图片文件
以下是另一个示例,我们下载一张图片文件 test.jpg。
HTML 代码:
<a href="download.php?filename=test.jpg">Download test.jpg</a>
download.php 代码:
<?php
$filename = $_GET['filename'];
if (file_exists($filename)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
} else {
exit('File not found');
}
?>
通过以上步骤,我们就可以通过 PHP 的 header() 函数实现文件下载功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP使用header方式实现文件下载功能 - Python技术站