当前位置:首页 > PHP

php 实现下载功能

2026-02-13 19:18:43PHP

使用 header 函数实现文件下载

在 PHP 中,可以通过设置 HTTP 头部信息实现文件下载功能。以下是一个基本示例:

$file_path = '/path/to/file.pdf'; // 文件路径  
$file_name = 'document.pdf';     // 下载时显示的文件名  

if (file_exists($file_path)) {  
    header('Content-Description: File Transfer');  
    header('Content-Type: application/octet-stream');  
    header('Content-Disposition: attachment; filename="' . $file_name . '"');  
    header('Expires: 0');  
    header('Cache-Control: must-revalidate');  
    header('Pragma: public');  
    header('Content-Length: ' . filesize($file_path));  
    readfile($file_path);  
    exit;  
} else {  
    echo '文件不存在';  
}  

通过文件流动态生成下载内容

如果需要动态生成文件内容(如 CSV 或文本文件),可以直接输出到浏览器:

$content = "姓名,年龄,职业\n张三,25,工程师\n李四,30,设计师";  
$file_name = 'data.csv';  

header('Content-Type: text/csv');  
header('Content-Disposition: attachment; filename="' . $file_name . '"');  
echo $content;  
exit;  

处理大文件下载

对于大文件下载,可以使用分块读取以避免内存问题:

$file_path = '/path/to/large_file.zip';  
$file_name = 'large_file.zip';  

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

    $chunk_size = 1024 * 1024; // 1MB 分块  
    $handle = fopen($file_path, 'rb');  
    while (!feof($handle)) {  
        echo fread($handle, $chunk_size);  
        ob_flush();  
        flush();  
    }  
    fclose($handle);  
    exit;  
}  

安全性注意事项

  • 验证文件路径,防止目录遍历攻击(如 ../)。
  • 限制用户权限,确保只能下载允许的文件。
  • 使用 basename() 清理文件名,避免注入恶意字符。

示例安全处理:

php 实现下载功能

$user_file = $_GET['file'];  
$safe_file = basename($user_file);  
$file_path = '/safe_dir/' . $safe_file;  

以上方法覆盖了从简单文件下载到动态内容生成和大文件处理的常见需求。

标签: 功能php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现linux关机重启功能

php实现linux关机重启功能

通过PHP执行Linux关机或重启命令 PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能,但需注意权限问题。 使用exec函数执行命令 //…

php实现队列

php实现队列

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

php如何实现直播

php如何实现直播

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

php 登录实现

php 登录实现

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