Html 如果没有enctype属性,为什么文件上载无法工作?
大多数时候,文件上传错误的来源是我们忘记在HTML表单中添加Html 如果没有enctype属性,为什么文件上载无法工作?,html,forms,upload,Html,Forms,Upload,大多数时候,文件上传错误的来源是我们忘记在HTML表单中添加enctype属性 通常,我们不需要为常规请求添加enctype属性。但是,在上传文件时,我们确实需要将其添加到HTML表单中 enctype="multipart/form-data" 我只是好奇,如果没有enctype属性,为什么上传文件不起作用?您可能想看看这里的评论: 简而言之,enctype告诉浏览器如何发送文件。如果没有正确的编码类型,它将无法发送文件。RFC 1867指定了“多部分/表单数据”enctype,您可以查看
enctype
属性
通常,我们不需要为常规请求添加enctype
属性。但是,在上传文件时,我们确实需要将其添加到HTML表单中
enctype="multipart/form-data"
我只是好奇,如果没有
enctype
属性,为什么上传文件不起作用?您可能想看看这里的评论:
简而言之,enctype告诉浏览器如何发送文件。如果没有正确的编码类型,它将无法发送文件。RFC 1867指定了“多部分/表单数据”enctype,您可以查看该enctype以了解更多技术概述
在HTML表单中,数据表示为多个字段。当使用多部分/表单数据作为enc类型时,浏览器将表单字段作为一系列“零件”发送,每个零件都有一个内容类型标题来描述存储在零件中的数据类型。对于普通表单字段,此内容类型通常设置为“文本/普通”。此内容类型仅在使用多部分/表单数据类型时由浏览器发送
对于类型为“file”的输入元素,内容类型为“application/octet stream”或类似内容,向服务器端软件表明字段的内容不是典型的纯文本,而是文件的内容,应以不同的方式处理
每当未使用“多部分/表单数据”时,“文件”类型的输入元素不起作用的原因是,服务器无法识别字段的内容是否与普通文本字段不同(因为除非使用多部分/表单数据,否则浏览器不会发送内容类型)因此,它将字段的内容处理为普通文本。如果使用了正确的enctype,并且服务器可以正确识别字段包含的数据类型,则服务器知道将字段的内容作为文件数据而不是文本处理,并可以正确处理它