当前位置:首页 > PHP

php实现下载

2026-02-27 12:21:12PHP

使用 PHP 实现文件下载

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

基本文件下载方法

$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 或文本数据),可以直接输出内容并设置适当的头信息。

$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 可强制下载。

php实现下载

$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']) ? (int…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…