fopen
是 PHP 中用于打开文件的一个内置函数。它可以用于文件上传和下载,但需要与其他函数结合使用。
- 文件上传:
在处理文件上传时,通常会将用户上传的文件保存到服务器上。这里是一个简单的例子:
// 检查是否有文件上传 if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "
"; } else { // 确定要保存文件的路径 $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["file"]["name"]); // 尝试将文件移动到指定目录 if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) { echo "The file " . basename($_FILES["file"]["name"]) . " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } }
- 文件下载:
在处理文件下载时,可以使用 fopen
和 fpassthru
函数将文件从服务器发送到客户端。这里是一个简单的例子:
// 设置文件名和文件路径 $filename = "example.txt"; $filepath = "downloads/" . $filename; // 检查文件是否存在 if (file_exists($filepath)) { // 打开文件 $file = fopen($filepath, "rb"); // 设置头信息以触发下载 header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Length: " . filesize($filepath)); // 读取并发送文件内容 fpassthru($file); // 关闭文件 fclose($file); // 退出脚本 exit; } else { echo "File not found."; }
在这个例子中,我们首先检查文件是否存在。如果存在,我们使用 fopen
以二进制只读模式(“rb”)打开文件。然后,我们设置响应头以告知浏览器这是一个文件下载。最后,我们使用 fpassthru
函数读取文件内容并将其发送给客户端。完成后,我们关闭文件并退出脚本。