当前位置:首页 > PHP

php实现下载

2026-02-27 12:21:12PHP

使用 PHP 实现文件下载

通过 PHP 实现文件下载需要设置正确的 HTTP 头信息,确保浏览器将响应视为文件下载而非直接显示内容。

php实现下载

基本文件下载方法

$file_path = '/path/to/your/file.pdf'; // 文件路径
$file_name = 'download.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('Content-Length: ' . filesize($file_path));
    readfile($file_path);
    exit;
} else {
    echo '文件不存在';
}

动态生成内容并下载

如果需要下载动态生成的内容(如 CSV 或文本数据),可以直接输出内容并设置适当的头信息。

php实现下载

$data = "姓名,年龄,性别\n张三,25,男\n李四,30,女"; // CSV 数据示例
$file_name = 'data.csv';

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

大文件分块下载

对于大文件,可以使用分块读取的方式避免内存问题。

$file_path = '/path/to/large/file.zip';
$file_name = 'large_file.zip';
$chunk_size = 1024 * 1024; // 1MB 每块

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

    $handle = fopen($file_path, 'rb');
    while (!feof($handle)) {
        echo fread($handle, $chunk_size);
        ob_flush();
        flush();
    }
    fclose($handle);
    exit;
} else {
    echo '文件不存在';
}

强制下载而非浏览器预览

某些文件类型(如 PDF 或图片)可能被浏览器直接打开而非下载。通过设置 Content-Dispositionattachment 可强制下载。

$file_path = '/path/to/image.jpg';
$file_name = 'image.jpg';

header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="' . $file_name . '"');
readfile($file_path);
exit;

安全注意事项

  • 验证文件路径,避免目录遍历攻击(如 ../)。
  • 限制用户可下载的文件范围,防止未授权访问。
  • 对于动态生成的文件,清理输入数据以避免注入风险。

以上方法覆盖了常见的文件下载场景,可根据实际需求调整头信息或逻辑。

标签: php
分享给朋友:

相关文章

php实现分页

php实现分页

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

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php实现博客

php实现博客

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