enctype='multipart/form-data'在HTML表单中意味着什么?我们应该何时使用它?


当前回答

enctype(ENCode TYPE)属性指定表单数据提交到服务器时应如何编码。multipart/formdata是enctype属性的值之一,用于具有文件上载的表单元素中。多部分是指将表单数据分成多个部分并发送到服务器。

其他回答

enctype属性指定表单数据提交到服务器时应如何编码。只有当method=“post”时,才能使用enctype属性。未编码任何字符。使用具有文件上载控件的表单时,需要此值

来自W3学校

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

提交表单时,将创建一个HTTP请求并将其发送到服务器,消息将包含表单中的字段名和用户填写的值。这种传输可以通过POST或GET HTTP方法进行。

POST告诉您的浏览器构建一个HTTP消息,并将所有内容放在消息正文中(这是一种非常有用的方式,更安全,也更灵活)。GET将提交查询字符串中的表单数据。它对数据表示和长度有一些限制。

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

属性enctype只有在使用POST方法时才有意义。如果指定,它将指示浏览器通过以特定方式编码表单内容来发送表单。来自MDN-表单enctype:

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

application/x-wwww-form-urlencoded:这是默认值。发送表单时,将收集所有名称和值,并对最终字符串执行URL编码。multipart/form数据:字符未编码。当表单具有文件上载控件时,这一点很重要。您希望发送文件二进制文件,这样可以确保比特流不会被更改。text/plain:空格被转换,但不再执行编码。

安全

提交表单时,可能会出现一些安全问题,如RFC 7578第7节:多部分表单数据-安全考虑:

所有表单处理软件应处理用户提供的表单数据敏感,因为它通常包含机密或个人信息识别信息。表单“自动填充”被广泛使用web浏览器中的功能;这些可能被用来欺骗用户在不知情的情况下发送机密信息无害的任务。多部分/表单数据不提供任何功能用于检查完整性、确保机密性、避免用户混淆或其他安全特征;这些担忧必须是由表单填充和表单数据解释应用程序解决。接收表格并处理表格的应用程序必须小心不向请求表单处理站点提供数据不打算发送。在解释内容的文件名时非常重要-Disposition头字段不会无意中覆盖收件人的文件空间。

如果您是一名开发人员,并且您的服务器将处理用户提交的表单,而这些表单最终可能包含敏感信息,这会让您感到担忧。

enctype='multipart/form-data'表示不会编码任何字符。这就是为什么在将文件上载到服务器时使用这种类型。因此,当表单需要上传二进制数据(如文件内容)时,使用multipart/form数据

将方法属性设置为POST,因为不能使用表单将文件内容放入URL参数中。

将enctype的值设置为multipart/form数据,因为数据将被拆分为多个部分,每个文件一个,以及可能随它们一起发送的表单正文文本一个。

通常这是当您有一个POST表单,需要将文件上载作为数据。。。这将告诉服务器它将如何对传输的数据进行编码,在这种情况下,它不会被编码,因为它只会将文件传输并上传到服务器,例如,当上传图像或pdf时