当前位置:首页 > PHP

php实现下载文件

2026-01-28 20:03:40PHP

使用PHP实现文件下载

PHP可以通过设置HTTP头信息实现文件下载功能。以下为几种常见方法:

使用readfile()函数

$file = 'path/to/file.pdf';
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

使用fopen()和fread()实现大文件下载

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

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

强制下载特定类型文件

$file = 'example.docx';
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;

处理中文文件名

$file = '中文文件.txt';
$filename = urlencode(basename($file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename*=UTF-8\'\''.$filename);
readfile($file);
exit;

注意事项

  • 确保文件路径正确且服务器有读取权限
  • 在发送头信息前不能有任何输出
  • 大文件下载建议分块读取避免内存问题
  • 下载完成后使用exit终止脚本执行
  • 考虑添加安全验证防止未授权下载

这些方法可以根据实际需求进行调整,如添加下载权限验证、记录下载日志等功能。

php实现下载文件

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

相关文章

css文件制作详细点

css文件制作详细点

CSS 文件制作指南 CSS(层叠样式表)用于控制网页的样式和布局。以下是详细的制作方法: 创建 CSS 文件 新建一个文本文件,将其保存为 .css 扩展名,例如 styles.css。确保文件名…

vue实现静态文件下载

vue实现静态文件下载

实现静态文件下载的方法 在Vue项目中实现静态文件下载可以通过多种方式完成,以下是几种常见的方法: 使用<a>标签下载 将静态文件放置在项目的public目录下,通过<a&g…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现树

php实现树

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

php实现递归

php实现递归

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

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'loca…