为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕少森 2019-05-24 16:01:02
enctype ='multipart / form-data'是什么意思?enctype='multipart/form-data'HTML表单中的含义是什么?我们何时应该使用它?
查看完整描述

4 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

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

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

  • application/x-www-form-urlencoded (默认)

  • multipart/form-data

  • text/plain

正在进行添加工作application/json,但这已被放弃。

(使用除HTML表单提交之外的其他方式生成的HTTP请求,可以进行其他编码。)

格式的细节对大多数开发人员来说无关紧要。重点是:

  • 切勿使用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规范中找到结果的示例。

text/plain由HTML 5引入并且仅用于调试 - 来自规范它们不能被计算机可靠地解释 - 我认为其他的与工具相结合(如大多数浏览器的开发人员工具中的Net选项卡)更好为了那个原因)。


查看完整回答
反对 回复 2019-05-24
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

enctype='multipart/form-data是一种允许通过POST发送文件的编码类型。很简单,没有这种编码,文件无法通过POST发送。

如果要允许用户通过表单上载文件,则必须使用此enctype


查看完整回答
反对 回复 2019-05-24
?
慕标5832272

TA贡献1966条经验 获得超4个赞

提交表单时,您告诉浏览器通过HTTP协议发送网络上的消息,该消息正确地包含在TCP / IP协议消息结构中。HTML页面有一种向服务器发送数据的方法:使用<form>s。

提交表单时,如果创建了HTTP请求并将其发送到服务器,则该消息将包含表单中的字段名称和用户填写的值。这种传输可以发生POSTGET HTTP方法

  • POST 告诉您的浏览器构建一条HTTP消息并将所有内容放在消息正文中(一种非常有用的方式,更安全,更灵活)。

  • GET将在查询字符串中提交表单数据。它对数据表示和长度有一些限制。

说明如何将表单发送到服务器

属性enctype只有在使用POST方法时才有意义。指定后,它会指示浏览器通过以特定方式对其内容进行编码来发送表单。来自MDN - 表格enctype

当method属性的值为post时,enctype是用于将表单提交给服务器的MIME内容类型。

  • application/x-www-form-urlencoded:这是默认值。发送表单时,将收集所有名称和值,并对最终字符串执行URL编码

  • multipart/form-data:字符不编码。当表单具有文件上载控件时,这很重要。您希望发送文件二进制文件,这可确保不改变比特流。

  • text/plain:空格被转换,但不再执行编码。

安全

提交表单时,可能会出现一些安全问题,如RFC 7578第7节:多部分表单数据中所述 - 安全注意事项

所有表单处理软件都应该
灵敏地处理用户提供的表单数据,因为它通常包含机密或个人
识别信息。在Web浏览器中广泛使用表单“自动填充”功能; 这些可能用于欺骗用户
在完成其他
无害任务时不知不觉地发送机密信息。multipart / form-data不提供任何
检查完整性,确保机密性,避免用户
混淆或其他安全功能的功能; 这些问题必须
通过表格填写和表格数据解释应用程序来解决。

接收表单并处理表单的应用程序必须小心,不要将数据提供回不打算发送的请求表单处理站点。

在解释Content- 
Disposition头字段的文件名时,重要的是不要无意中覆盖
收件人文件空间中的文件。

如果您是开发人员,并且您的服务器将处理用户提交的表单(可能最终包含敏感信息),则会引起您的注意。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 1819 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信