当前位置:首页 > PHP

php下载实现

2026-02-15 02:10:16PHP

PHP 文件下载实现方法

在 PHP 中实现文件下载可以通过设置 HTTP 头部信息并输出文件内容来完成。以下是几种常见的实现方式:

使用 header() 函数强制下载

通过设置 Content-Disposition 头部,可以强制浏览器弹出下载对话框:

$file = 'path/to/file.pdf';
$filename = 'custom_name.pdf';

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

分块下载大文件

对于大文件,可以使用分块读取方式减少内存占用:

$file = 'large_file.zip';
$chunk_size = 1024 * 1024; // 1MB chunks

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');

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

动态生成内容下载

可以直接将字符串内容作为文件提供下载:

$content = "This will be downloaded as text file";
$filename = "data.txt";

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

安全注意事项

实现文件下载时需注意安全防护:

// 验证文件路径是否在允许目录中
$base_dir = '/safe/download/directory/';
$requested_file = $_GET['file'];
$real_path = realpath($base_dir . $requested_file);

if (strpos($real_path, $base_dir) !== 0) {
    die('Invalid file path');
}

// 继续处理下载...

常见 MIME 类型设置

根据文件类型设置正确的 Content-Type:

php下载实现

  • PDF: application/pdf
  • ZIP: application/zip
  • JPEG: image/jpeg
  • PNG: image/png
  • CSV: text/csv
  • Excel: application/vnd.ms-excel

以上方法涵盖了 PHP 实现文件下载的主要场景,可根据实际需求选择适合的方式。

标签: php
分享给朋友:

相关文章

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…

php 插件实现

php 插件实现

PHP 插件实现方法 PHP 插件可以通过多种方式实现,具体取决于插件的用途和功能需求。以下是一些常见的实现方法: 使用钩子(Hooks)和过滤器(Filters) 钩子和过滤器是一种常见的插件架…

php 实现长轮询

php 实现长轮询

PHP 实现长轮询的方法 长轮询(Long Polling)是一种服务器推送技术,客户端发送请求后,服务器保持连接开放直到有新数据或超时。以下是实现步骤: 基础实现代码 创建一个简单的长轮询 PHP…

php评论功能实现

php评论功能实现

数据库设计 创建一个评论表存储评论数据,表结构可包含以下字段: id:自增主键 content:评论内容(TEXT类型) user_id:关联用户表的ID article_id:关联文章表的ID c…

php实现excel导出excel

php实现excel导出excel

PHPExcel 库实现 Excel 导出 PHPExcel 是一个流行的 PHP 库,用于处理 Excel 文件。以下是使用 PHPExcel 导出 Excel 的基本步骤。 安装 PHPExce…