fopen
是 PHP 中用于打开文件的一个内置函数。它可以用于文件上传和下载,但需要与其他函数结合使用。
在处理文件上传时,通常会将用户上传的文件保存到服务器上。这里是一个简单的例子:
// 检查是否有文件上传
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br>";
} 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
函数读取文件内容并将其发送给客户端。完成后,我们关闭文件并退出脚本。