html - 编码类型 ='multipart/form-data' 是什么意思?

标签 html http-headers multipartform-data

enctype='multipart/form-data' 在 HTML 表单中是什么意思,我们应该什么时候使用它?

最佳答案

当您发出 POST 请求时,您必须以某种方式对构成请求正文的数据进行编码。

HTML 表单提供 three methods of encoding .

  • application/x-www-form-urlencoded (默认)
  • multipart/form-data
  • text/plain

正在完成添加 application/json 的工作,但已被放弃。

(使用 HTML 表单提交以外的其他方式生成的 HTTP 请求也可以使用其他编码。JSON 是用于 Web 服务的常用格式,有些仍然使用 SOAP。)

格式的细节对大多数开发者来说并不重要。重点是:

  • 切勿使用 text/plain .

在编写客户端代码时:

  • 使用 multipart/form-data当您的表单包含任何 <input type="file">元素
  • 否则您可以使用 multipart/form-dataapplication/x-www-form-urlencoded但是 application/x-www-form-urlencoded会更有效率

在编写服务器端代码时:

  • 使用预先编写的表单处理库

大多数(例如 Perl 的 CGI->param 或 PHP 的 $_POST 超全局)都会为您处理差异。不要费心尝试解析服务器接收到的原始输入。

有时您会发现一个库不能同时处理这两种格式。 Node.js 最流行的处理表单数据的库是 body-parser它不能处理多部分请求(但有推荐一些可以替代的文档)。


如果您正在编写(或调试)用于解析或生成原始数据的库,那么您需要开始担心格式。出于兴趣,您可能还想了解它。

application/x-www-form-urlencoded或多或少与 URL 末尾的查询字符串相同。

multipart/form-data复杂得多,但它允许将整个文件包含在数据中。可以在 HTML 4 specification 中找到结果示例。 .

text/plain由 HTML 5 引入,仅对调试有用 — 来自 the spec : 它们不能被计算机可靠地解释——我认为其他与工具相结合的工具(如大多数浏览器的开发工具中的 the Network Panel)更好)。

关于html - 编码类型 ='multipart/form-data' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526273/

相关文章:

java - Jetty 在多部分表单请求上抛出 "Missing content for multipart request"

javascript - 从移动网站链接到亚马逊应用程序中的特定产品

python - http客户端需要访问nginx两次才能加载css文件

html - 选择器填充可用空间之前的 CSS

html - HTML建议:我应该选择调整图库图像的大小还是使用单独的缩略图图像?

php - 在这个特定场景中如何使用 POST 而不是 GET

javascript - 如何仅在 Angular 文件上传中将文件限制为 UTF-8 编码?

java - 多部分解析器未处理多部分请求

javascript - JavaScript 可以设置哪些 HTTP header ?

java - 使用 RestEasy,如何在传入对象参数之一的属性上使用 @HeaderParam 注释?