温馨提示×

PHP fopen函数与文件上传下载

PHP
小樊
87
2024-09-04 23:42:23
栏目: 编程语言

fopen 是 PHP 中用于打开文件的一个内置函数。它可以用于文件上传和下载,但需要与其他函数结合使用。

  1. 文件上传:

在处理文件上传时,通常会将用户上传的文件保存到服务器上。这里是一个简单的例子:

// 检查是否有文件上传
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.";
    }
}
  1. 文件下载:

在处理文件下载时,可以使用 fopenfpassthru 函数将文件从服务器发送到客户端。这里是一个简单的例子:

// 设置文件名和文件路径
$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 函数读取文件内容并将其发送给客户端。完成后,我们关闭文件并退出脚本。

0