当前位置:首页 > PHP

php实现下载

2026-01-14 12:53:52PHP

PHP实现文件下载

使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法:

方法一:直接输出文件内容

$file_path = 'path/to/your/file.pdf';
$file_name = basename($file_path);

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

readfile($file_path);
exit;

方法二:处理大文件分块下载

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

$file_path = 'large_file.zip';
$file_name = basename($file_path);
$chunk_size = 1024 * 1024; // 1MB chunks

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;

方法三:动态生成内容下载

如果需要下载动态生成的内容(如CSV数据):

$data = "Name,Email,Phone\nJohn,john@example.com,123456789";

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
header('Content-Length: ' . strlen($data));

echo $data;
exit;

注意事项

  • 确保文件路径正确且有读取权限
  • 在发送头部前不能有任何输出(包括空格和空行)
  • 对于敏感文件,建议存储在web目录外并通过PHP脚本控制访问
  • 添加安全验证防止未授权下载

安全增强示例

// 验证用户权限
if (!user_has_permission()) {
    die('Access denied');
}

$file_path = '/secure/path/to/file.pdf';
// 进一步验证文件是否存在且可读

php实现下载

标签: php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

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

php实现搜索功能

php实现搜索功能

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

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query…