📜  如何使用 HTTP POST 选择和上传带有 HTML 和PHP 的多个文件?(1)

📅  最后修改于: 2023-12-03 15:38:01.818000             🧑  作者: Mango

如何使用 HTTP POST 选择和上传带有 HTML 和 PHP 的多个文件?

在 Web 开发中,我们经常需要上传文件。HTTP POST 是上传文件的常用方式之一。本文将介绍如何使用 HTTP POST 选择和上传带有 HTML 和 PHP 的多个文件。

HTML 表单

在 HTML 中,我们可以通过表单来上传文件。为了上传多个文件,我们需要添加 multiple 属性。下面是一个上传多个文件的 HTML 表单示例:

<form action="upload.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="files[]" multiple>
  <input type="submit" value="上传">
</form>
  • action 属性指定了表单提交的 URL。
  • method 属性指定了表单提交的 HTTP 方法,通常为 POST。
  • enctype 属性指定了表单中包含文件上传的数据编码方式。对于文件上传,需要使用 multipart/form-data
  • input 标签中的 type 属性为 file,表示上传文件。
  • name 属性指定了上传文件的参数名,后端接口需要根据该参数名获取文件数据。
  • multiple 属性表示可以选择多个文件。
PHP 后端接口

前端上传表单提交到后台时,服务器端需要接收上传文件的数据,并将文件保存到对应的位置。下面是一个 PHP 后端接口示例:

$upload_dir = './uploads/';
if (!file_exists($upload_dir)) {
  mkdir($upload_dir);
}

if (!empty($_FILES['files']['name'][0])) {
  foreach ($_FILES['files']['error'] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
      $tmp_name = $_FILES['files']['tmp_name'][$key];
      $name = basename($_FILES['files']['name'][$key]);
      move_uploaded_file($tmp_name, "{$upload_dir}/{$name}");
    }
  }
}
  • $upload_dir 变量指定了上传文件保存的目录。
  • file_exists 函数判断该目录是否存在,如果不存在则创建目录。
  • $_FILES 数组中的 files 键对应了表单中文件上传的参数名。
  • name 键对应了上传的文件名,tmp_name 键对应了上传的临时文件的路径。
  • move_uploaded_file 函数将上传的文件从临时文件夹移动到指定目录。
总结

以上就是使用 HTTP POST 选择和上传带有 HTML 和 PHP 的多个文件的方法。通过 HTML 表单和 PHP 后端接口,我们可以方便地上传任意类型和数量的文件到服务器端。