当前位置:首页 > PHP

php实现下载功能

2026-01-28 19:28:54PHP

PHP实现文件下载功能

使用PHP实现文件下载功能可以通过设置HTTP头信息控制浏览器行为,以下是几种常见实现方式:

基础下载方法

$file_path = '/path/to/file.pdf';
$file_name = 'document.pdf';

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file_path));
readfile($file_path);
exit;

大文件分块下载

对于大文件下载,建议使用分块读取方式避免内存问题:

$file = fopen($file_path, 'rb');
while(!feof($file)) {
    print(fread($file, 1024*8));
    ob_flush();
    flush();
}
fclose($file);

动态生成内容下载

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

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

$output = fopen('php://output', 'w');
fputcsv($output, ['ID', 'Name', 'Email']);
fputcsv($output, [1, 'John', 'john@example.com']);
fclose($output);

安全注意事项

  • 验证文件路径防止目录遍历攻击
  • 限制下载目录范围
  • 对用户权限进行检查
  • 记录下载日志
// 安全示例
$base_dir = '/safe/download/dir/';
$requested_file = $_GET['file'];
$real_path = realpath($base_dir . $requested_file);

if(strpos($real_path, $base_dir) === 0 && file_exists($real_path)) {
    // 安全下载逻辑
}

常见问题处理

下载中文文件名时可能出现乱码,需要额外处理:

php实现下载功能

$encoded_name = rawurlencode($file_name);
header('Content-Disposition: attachment; filename*=UTF-8\'\'' . $encoded_name);

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

标签: 功能php
分享给朋友:

相关文章

vue实现倍速播放功能

vue实现倍速播放功能

实现倍速播放功能的方法 在Vue中实现倍速播放功能通常涉及HTML5的<video>元素或第三方播放器库(如video.js)的API调用。以下是具体实现方式: 使用原生HTML5 vi…

php实现搜索功能

php实现搜索功能

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

php实现增删改查

php实现增删改查

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

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 购物车实现

php 购物车实现

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

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…