4

我喜欢这个主题中的问答对:

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

我觉得缺少的是浏览器/服务器如何感受到普通表单帖子和multipart帖子之间的区别。因为作为用户,我认为浏览器对表单提交的反应没有什么不同,而作为一名想要成为 Web 开发人员的人,我会收到整个帖子(例如文件),而不是“部分”......

一个好的答案可以解释multipart中的部分到底是什么?

4

1 回答 1

1

就像您提到的问题中提到的那样,可以通过两种方式post发送表单的编码:application/x-www-form-urlencodedmultipart/form-data.

它们都将在请求的正文中post发送。而不是像get它与 url 本身一起传递的地方。

这是两者的示例:http: //www.htmlcodetutorial.com/forms/form_enctype.html

您可以说partget请求的 urlencoded 形式的参数名称的另一种表示形式。

urlencoded: realname= 部分: Content-Disposition: form-data; name="realname"

不同的部分由标题中定义的边界分隔: Content-type: multipart/form-data; boundary=---------------------------7cd1d6371ec

编辑 床边编码的区别最重要的是,multipart/form-data客户端可以向键/值对添加其他信息,例如值的类型(例如Content-Type: image/jpeg)或文件名。有了这些信息,服务器就可以对不同类型的值执行某些操作。

使用application/x-www-form-urlencoded时,无法以标准化方式存储键/值对的附加信息。

这就是为什么你必须使用multipart/form-data如果你想用post请求提交文件的原因。这不是因为无法将文件作为 url 格式的 base64 编码值传递,而是因为 urlencoding 没有标准的方法来告诉服务器它是文件而不是字符串。

于 2013-03-07T11:39:57.243 回答