当前位置:首页 > PHP

php 实现点击下载

2026-02-16 05:52:03PHP

实现 PHP 点击下载功能

使用 PHP 实现文件下载功能通常涉及设置正确的 HTTP 头部信息,并输出文件内容。以下是几种常见的实现方法:

基本文件下载

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

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

动态生成内容下载

对于动态生成的内容(如 CSV 数据),可以直接输出:

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

$output = fopen('php://output', 'w');
fputcsv($output, ['Column1', 'Column2']);
fputcsv($output, ['Data1', 'Data2']);
fclose($output);
exit;

大文件分块下载

处理大文件时可以使用分块读取:

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

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

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

安全注意事项

确保对下载文件路径进行验证,防止目录遍历攻击:

$base_dir = '/safe/download/directory/';
$requested_file = $_GET['file'];
$file_path = realpath($base_dir . $requested_file);

if ($file_path === false || strpos($file_path, $base_dir) !== 0) {
    die('Invalid file requested');
}

前端触发下载

HTML 中可以通过链接或表单触发下载:

<a href="download.php?file=document.pdf">Download PDF</a>

<form method="post" action="download.php">
    <input type="hidden" name="file" value="report.docx">
    <button type="submit">Download Document</button>
</form>

php 实现点击下载

标签: 点击下载php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php实现打印功能

php实现打印功能

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

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注…