当前位置:首页 > PHP

php怎么实现下载文件

2026-01-29 00:14:52PHP

使用 header() 函数强制下载

设置合适的 HTTP 头部信息,指定内容类型为下载文件,并设置文件名:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.pdf"');
header('Content-Length: ' . filesize('path/to/file.pdf'));
readfile('path/to/file.pdf');
exit;

通过文件流输出

适用于大文件或动态生成的文件内容,分块读取文件减少内存占用:

$file = 'path/to/large_file.zip';
$chunkSize = 1024 * 1024; // 1MB per chunk
if ($handle = fopen($file, 'rb')) {
    while (!feof($handle)) {
        echo fread($handle, $chunkSize);
        ob_flush();
        flush();
    }
    fclose($handle);
}

处理动态生成的文件

例如将数据库内容导出为 CSV 并下载:

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="data.csv"');
$output = fopen('php://output', 'w');
fputcsv($output, ['ID', 'Name', 'Email']); // 写入表头
// 假设从数据库获取数据
foreach ($dataRows as $row) {
    fputcsv($output, $row);
}
fclose($output);

安全注意事项

验证文件路径防止目录遍历攻击:

$requestedFile = basename($_GET['file']); // 过滤非法字符
$filePath = '/safe/directory/' . $requestedFile;
if (!file_exists($filePath)) {
    die('File not found');
}

断点续传支持

通过 HTTP_RANGE 处理部分下载请求:

if (isset($_SERVER['HTTP_RANGE'])) {
    $range = $_SERVER['HTTP_RANGE'];
    // 解析范围并处理分片输出
    // 需设置 HTTP/1.1 206 Partial Content 状态码
}

以上方法覆盖了从简单文件下载到大文件分块处理的常见场景,需根据实际需求选择合适方案。注意始终对用户输入的文件名做安全校验,避免路径穿越漏洞。

php怎么实现下载文件

标签: 文件php
分享给朋友:

相关文章

vue实现录音文件播放

vue实现录音文件播放

实现录音文件播放的方法 在Vue中实现录音文件播放需要结合HTML5的Web Audio API或第三方库。以下是两种常见的方法: 使用HTML5 Audio元素 通过Vue动态绑定<a…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…