当前位置:首页 > PHP

php实现文件的下载

2026-04-02 20:36:35PHP

使用 header() 函数实现文件下载

通过设置 HTTP 头信息强制浏览器下载文件而非直接显示。需指定 Content-Typeapplication/octet-stream,并设置 Content-Disposition 为附件形式。

php实现文件的下载

$file_path = '/path/to/file.pdf';
$file_name = 'download.pdf';

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file_name . '"');
header('Content-Length: ' . filesize($file_path));

readfile($file_path);
exit;

处理大文件的分块下载

对于大文件,使用 fread() 分块读取并输出,避免内存溢出。

php实现文件的下载

$file_path = '/path/to/large_file.zip';
$chunk_size = 1024 * 1024; // 1MB per chunk

$handle = fopen($file_path, 'rb');
while (!feof($handle)) {
    echo fread($handle, $chunk_size);
    ob_flush();
    flush();
}
fclose($handle);
exit;

动态生成文件并下载

适用于临时生成 CSV、Excel 等文件后直接提供下载。

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="data.csv"');

$output = fopen('php://output', 'w');
fputcsv($output, ['Name', 'Email']); // 写入表头
fputcsv($output, ['Alice', 'alice@example.com']); // 写入数据
fclose($output);
exit;

安全注意事项

  • 验证文件路径:防止目录遍历攻击,确保用户无法访问非授权文件。
    $base_dir = '/safe/directory/';
    $requested_file = $_GET['file'];
    if (strpos(realpath($base_dir . $requested_file), $base_dir) === 0) {
        // 安全路径
    }
  • 限制下载频率:防止恶意刷流量,可通过会话或 IP 记录控制下载次数。

使用 X-Sendfile 提升性能(需服务器支持)

通过让服务器直接处理文件传输,减少 PHP 进程的资源占用。

header('X-Sendfile: /path/to/file.zip');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="file.zip"');
exit;

以上方法覆盖了从简单下载到高性能处理的常见场景,可根据实际需求选择。

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

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…