当前位置:首页 > PHP

php实现app下载

2026-02-16 05:42:00PHP

实现 PHP 下载功能

在 PHP 中实现文件下载功能通常通过设置 HTTP 头信息并输出文件内容来完成。以下是实现的基本方法:

设置正确的 HTTP 头信息

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

读取并输出文件内容

php实现app下载

readfile($file);
exit;

完整下载函数示例

function downloadFile($file) {
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
    } else {
        die('文件不存在');
    }
}

处理大文件下载

对于大文件下载,可以使用分块读取的方式减轻内存压力:

$chunkSize = 1024 * 1024; // 1MB chunks
$handle = fopen($file, 'rb');
while (!feof($handle)) {
    $buffer = fread($handle, $chunkSize);
    echo $buffer;
    ob_flush();
    flush();
}
fclose($handle);

安全注意事项

验证用户权限 在提供下载前应验证用户是否有权限下载该文件。

php实现app下载

防止目录遍历攻击

$basePath = '/safe/download/directory/';
$realBase = realpath($basePath);
$userPath = $basePath . $_GET['file'];
$realUserPath = realpath($userPath);

if ($realUserPath === false || strpos($realUserPath, $realBase) !== 0) {
    die('非法文件路径');
}

设置下载限速

$downloadRate = 100; // 100KB/s
while (!feof($handle)) {
    $buffer = fread($handle, $downloadRate * 1024);
    echo $buffer;
    ob_flush();
    flush();
    sleep(1);
}

标签: phpapp
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现统计

php实现统计

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

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…