enctype='multipart/form-data' 是什么意思?

问题描述

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

HTML 表单提供了三种编码方法。

  • 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-dataorapplication/x-www-form-urlencodedapplication/x-www-form-urlencoded会更有效

在编写服务器端代码时:

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

大多数(例如 PerlCGI->param或 PHP 的$_POSTsuperglobal 所公开的)将为您处理差异。不要费心尝试解析服务器接收到的原始输入。

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


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

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

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

text/plain由 HTML 5 引入,仅对调试有用——从规范来看:它们不能被计算机可靠地解释——我认为其他与工具相结合的工具(如大多数浏览器的开发人员工具中的网络面板)更好为了那个原因)。

解决方法

HTML 表单中的含义是什么,enctype=’multipart/form-data’我们应该什么时候使用它?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...