欢迎访问宙启技术站
智能推送

PHP单文件和多文件上传实例

发布时间:2023-05-17 23:31:32

PHP是一种非常流行的Web开发语言,可以轻松地实现文件上传功能。本文将介绍PHP的单文件上传和多文件上传。

单文件上传

首先,我们来看看如何使用PHP上传单个文件。以下是一个简单的例子:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="fileToUpload">
  <input type="submit" value="Upload File" name="submit">
</form>

上述代码创建了一个HTML表单,其中包含一个文件选择输入框和一个提交按钮。当用户上传文件时,表单将被提交到名为“upload.php”的PHP文件中。

接下来,我们来看看upload.php文件的代码:

<?php
if(isset($_POST["submit"])) {
  $target_dir = "uploads/";
  $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
  $uploadOk = 1;
  $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
  
  // 检查文件是否是图像文件类型
  if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  && $imageFileType != "gif" ) {
      echo "只能上传JPG、JPEG、PNG和GIF文件!";
      $uploadOk = 0;
  }
  
  // 检查文件是否已存在
  if (file_exists($target_file)) {
      echo "对不起,文件已存在!";
      $uploadOk = 0;
  }
  
  // 检查文件大小
  if ($_FILES["fileToUpload"]["size"] > 500000) {
      echo "对不起,文件太大了!";
      $uploadOk = 0;
  }
  
  // 如果上传成功,则将文件移动到uploads目录中
  if ($uploadOk == 0) {
      echo "对不起,文件无法上传!";
  } else {
      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
          echo "文件" . basename( $_FILES["fileToUpload"]["name"]). "已成功上传!";
      } else {
          echo "对不起,文件上传出错!";
      }
  }
}
?>

upload.php文件首先检查用户是否单击了提交按钮,并根据情况检查所上传的文件。如果文件类型、大小或名称问题,则将显示错误消息。如果文件可以上传,则将其移动到名为“uploads”的文件夹中。

多文件上传

现在我们来看看如何使用PHP上传多个文件。以下是一个简单的例子:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="filesToUpload[]" multiple>
  <input type="submit" value="Upload Files" name="submit">
</form>

上述代码创建了一个HTML表单,其中包含一个文件选择输入框和一个提交按钮。由于我们要上传多个文件,因此我们需要在文件选择框的名称中使用一个数组。

接下来,我们来看看upload.php文件的代码:

<?php
if(isset($_POST["submit"])){
  $target_dir = "uploads/";
  $uploadOk = 1;
  $allowedTypes = array("jpg", "jpeg", "png", "gif");
  
  // 通过循环处理每个文件
  foreach($_FILES["filesToUpload"]["tmp_name"] as $key=>$tmp_name) {
    // 获取文件属性
    $file_name = $_FILES["filesToUpload"]["name"][$key];
    $file_tmp = $_FILES["filesToUpload"]["tmp_name"][$key];
    $file_type = $_FILES["filesToUpload"]["type"][$key];
    $file_size = $_FILES["filesToUpload"]["size"][$key];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
    
    // 检查文件类型和大小
    if(!in_array($file_ext,$allowedTypes)) {
      echo "文件".$file_name."只能上传JPG、JPEG、PNG和GIF文件!";
      $uploadOk = 0;
    }
    
    if($file_size > 500000) {
      echo "文件".$file_name."太大了!";
      $uploadOk = 0;
    }
    
    // 如果上传成功,则将文件移动到uploads目录中
    if($uploadOk == 1) {
      $file_newname = uniqid().".".$file_ext;
      move_uploaded_file($file_tmp,$target_dir.$file_newname);
      echo "文件".$file_name."上传成功!<br>";
    }
  }
}
?>

upload.php文件首先检查用户是否单击了提交按钮,并通过循环处理每个上传的文件。对于每个文件,它检查文件类型、大小,如果一切正常,则将文件上传到名为“uploads”的文件夹中。该文件的名称将使用 的ID和文件扩展名来生成。

结论

PHP的文件上传功能非常强大,可以轻松地实现单个或多个文件的上传。只需根据需要调整一些参数和函数,即可创建定制的上传功能。但是,记住要小心处理上传的文件,以确保安全性。