📜  PHP-文件上传(1)

📅  最后修改于: 2023-12-03 14:45:26.963000             🧑  作者: Mango

PHP 文件上传

在 Web 开发中,文件上传是一项非常常见的功能。PHP 提供了方便的内置函数和特定 API 来处理文件上传。

文件上传的基本原理

文件上传的基本原理是通过 HTML 表单(form)元素的 enctype 属性设置为 "multipart/form-data",将文件数据以二进制流形式发送到服务器,服务器接收到数据后进行处理。

HTML 表单代码
<form enctype="multipart/form-data" method="post" action="upload.php">
  <label>上传文件:</label>
  <input type="file" name="file">
  <button type="submit" name="submit">上传</button>
</form>

需要注意的是,表单中的 method 必须设置为 post,action 必须指向处理上传的 PHP 脚本。

文件上传 PHP 代码
<?php
$target_dir = "uploads/"; // 文件上传目录
$target_file = $target_dir . basename($_FILES["file"]["name"]); // 获取上传文件名
$uploadOk = 1; // 上传标识符
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // 获取上传文件类型

// 检查文件是否为真实图片
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["file"]["tmp_name"]);
  if($check !== false) {
    echo "文件是一个真实的图片 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "文件不是一个真实图片。";
    $uploadOk = 0;
  }
}

// 检查文件大小
if ($_FILES["file"]["size"] > 500000) {
  echo "对不起,你的文件太大。";
  $uploadOk = 0;
}

// 允许上传的文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "只允许 JPG, JPEG, PNG & GIF 文件格式。";
  $uploadOk = 0;
}

// 检查上传标识符
if ($uploadOk == 0) {
  echo "对不起,你的文件上传失败。";
// 如果一切正常,则尝试上传文件
} else {
  if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "文件 ". basename( $_FILES["file"]["name"]). " 上传成功。";
  } else {
    echo "对不起,文件上传失败。";
  }
}
?>
上传文件目录

需要在服务器上创建一个目录来保存上传的文件。在上面的 PHP 代码中,上传文件目录为 "uploads/"。确保该目录有写权限,否则文件上传会失败。

结论

以上就是 PHP 文件上传的基础。通过表单元素和 PHP 代码的配合使用,实现文件上传功能是非常简单和容易的。但需要注意的是,上传的文件必须经过严格的检验和验证,以防止安全问题的出现。