我喜欢这个主题中的问答对:
enctype='multipart/form-data' 是什么意思?
我觉得缺少的是浏览器/服务器如何感受到普通表单帖子和multipart
帖子之间的区别。因为作为用户,我认为浏览器对表单提交的反应没有什么不同,而作为一名想要成为 Web 开发人员的人,我会收到整个帖子(例如文件),而不是“部分”......
一个好的答案可以解释multipart中的部分到底是什么?
我喜欢这个主题中的问答对:
enctype='multipart/form-data' 是什么意思?
我觉得缺少的是浏览器/服务器如何感受到普通表单帖子和multipart
帖子之间的区别。因为作为用户,我认为浏览器对表单提交的反应没有什么不同,而作为一名想要成为 Web 开发人员的人,我会收到整个帖子(例如文件),而不是“部分”......
一个好的答案可以解释multipart中的部分到底是什么?
就像您提到的问题中提到的那样,可以通过两种方式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=
部分: 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 没有标准的方法来告诉服务器它是文件而不是字符串。