当前位置:首页 > PHP

php下载实现

2026-03-13 00:58:11PHP

PHP 文件下载实现方法

直接输出文件内容 通过设置 HTTP 头信息并直接输出文件内容实现下载功能。需要指定正确的 Content-Type 和 Content-Disposition。

$file = 'path/to/file.pdf';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;

分块下载大文件 对于大文件下载,可以使用分块读取方式避免内存问题。

php下载实现

$file = 'large_file.zip';
$chunk_size = 1024*1024; // 1MB chunks
$handle = fopen($file, 'rb');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');

while (!feof($handle)) {
    echo fread($handle, $chunk_size);
    ob_flush();
    flush();
}
fclose($handle);
exit;

安全下载控制 添加权限验证和日志记录等安全措施。

php下载实现

session_start();
if (!isset($_SESSION['user_id'])) {
    die('Access denied');
}

$safe_dir = '/var/www/downloads/';
$requested_file = basename($_GET['file']);
$full_path = $safe_dir . $requested_file;

if (!file_exists($full_path)) {
    die('File not found');
}

// 记录下载日志
file_put_contents('download.log', date('Y-m-d H:i:s').' '.$_SESSION['user_id'].' '.$requested_file.PHP_EOL, FILE_APPEND);

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

强制下载特定类型 确保某些文件类型总是触发下载而非在浏览器中打开。

$file = 'document.pdf';
$mime_types = [
    'pdf' => 'application/pdf',
    'zip' => 'application/zip'
];

$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
$content_type = $mime_types[$ext] ?? 'application/octet-stream';

header('Content-Type: '.$content_type);
header('Content-Disposition: attachment; filename="'.basename($file).'"');
readfile($file);

处理中文文件名 正确处理包含非ASCII字符的文件名下载。

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

实现文件下载功能时需要注意文件路径安全、内存使用优化和特殊字符处理等问题。根据具体需求选择合适的实现方式,并确保添加适当的安全验证措施。

标签: php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php搜索功能实现的

php搜索功能实现的

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

php 实现下载

php 实现下载

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

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php实现单一入口

php实现单一入口

PHP 单一入口实现方法 单一入口(Single Entry Point)是一种设计模式,通过一个入口文件(如index.php)集中处理所有请求,实现路由分发、统一初始化等操作。以下是实现方法:…