📜  HTML |<form> enctype 属性(1)

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

HTML |
enctype 属性

在 HTML 中,

元素被用于创建包含表单元素的窗体。当表单中包含文件上传时,需要使用 enctype 属性来指定表单的编码类型。

语法
<form action="URL" method="POST" enctype="enctype-type">
  <!-- 表单元素 -->
</form>
可选值

enctype-type 可以设置以下可选值:

  • application/x-www-form-urlencoded
  • multipart/form-data
  • text/plain

其中,最常用的是 multipart/form-data。

application/x-www-form-urlencoded

在使用 enctype="application/x-www-form-urlencoded" 时,表单数据会被编码成 URL 格式。例如:

<form action="process.php" method="POST" enctype="application/x-www-form-urlencoded">
  <label>用户名:</label>
  <input type="text" name="username">
  <br>
  <label>密码:</label>
  <input type="password" name="password">
  <br>
  <input type="submit" value="登录">
</form>

在 PHP 中可以通过 $_POST 来获取表单数据,例如:

$username = $_POST['username'];
$password = $_POST['password'];
multipart/form-data

在使用 enctype="multipart/form-data" 时,表单数据会被编码成多部分格式,可以包含二进制数据(如上传的文件)。例如:

<form action="process.php" method="POST" enctype="multipart/form-data">
  <label>头像:</label>
  <input type="file" name="avatar">
  <br>
  <label>用户名:</label>
  <input type="text" name="username">
  <br>
  <label>密码:</label>
  <input type="password" name="password">
  <br>
  <input type="submit" value="注册">
</form>

在 PHP 中可以通过 $_FILES 来获取上传的文件,例如:

$avatar = $_FILES['avatar'];
$username = $_POST['username'];
$password = $_POST['password'];
text/plain

在使用 enctype="text/plain" 时,表单数据不会被编码,而是以纯文本形式进行提交。例如:

<form action="process.php" method="POST" enctype="text/plain">
  <label>用户名:</label>
  <input type="text" name="username">
  <br>
  <label>密码:</label>
  <input type="password" name="password">
  <br>
  <input type="submit" value="登录">
</form>

在 PHP 中可以通过 $_POST 来获取表单数据,例如:

$data = file_get_contents('php://input');
list($username, $password) = explode("\n", $data);