我喜欢本主题中的问答配对:
What does enctype='multipart/form-data' mean?
我觉得缺少的是浏览器/服务器如何感受普通表单帖子和multipart
帖子之间的区别。因为作为一个用户,我发现浏览器对表单提交的反应没有区别,作为一个想要的Web开发者,我收到了整个帖子(例如文件),而不是“部分”......
一个好的答案可以解释 multipart 中部分究竟是什么?
答案 0 :(得分:1)
与您的推荐问题中提到的一样,有两种方法可以对表单的post
进行编码:application/x-www-form-urlencoded
或multipart/form-data
。
它们都将在post
请求的正文中发送。而不是与get
一样,它与url本身一起传递。
这是两个例子: http://www.htmlcodetutorial.com/forms/form_enctype.html
您可以说part
是get
请求的urlencoded格式中参数名称的另一种表示形式。
urlencoded: realname=
part: 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没有标准的方法告诉服务器它是文件而不是字符串。