首页 > 解决方案 > W3schools 说“formenctype”仅适用于“提交”和“图像”类型,而其他人都说它用于“文件”类型。w3school 错了吗?

问题描述

https://www.w3schools.com/html/html_form_attributes_form.asp

如您所见,他们说“formencstyle”属性仅适用于以下输入类型:“图像”和“提交”,但stackoverflow上的每个人都说,formenctype =“multipart/form-data”是为了使用对于“输入”元素的“文件”类型。那么,为什么 w3schools 然后声称该属性只能用于“提交”和“图像”?他们又过时了吗?

标签: htmlcss

解决方案


你把事情搞混了。

“编码类型”是表单在发送到服务器时的编码方式。这适用于整个表单。它不能应用于单个元素。如果你想使用<input type="file">元素上传文件,你的表单(作为一个整体)需要使用multipart/form-data编码提交。

您可以通过使用元素enctype="multipart/form-data"上的属性或使用提交按钮上的属性来定义该编码类型。<form>formenctype="multipart/form-data"

当使用提交按钮提交表单时,提交按钮上的formenctype属性会覆盖元素的属性。enctype<form>

<form method="POST">
  <input type="submit" 
         value="Clicking me submits the form using the default `application/x-www-form-urlencoded` encoding method">
  <input type="submit" 
         formenctype="multipart/form-data"
         value="Clicking me submits the form using the `multipart/form-data` encoding method">
</form>

您不能将 应用于formenctype文件元素,因为文件元素不是提交按钮,并且编码类型不适用于单个元素。

在这种情况下,W3Schools 没有错。用于提交按钮,formenctype有两种提交按钮:<input type="image"><input type="submit">


推荐阅读