Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如果没有enctype属性,为什么文件上载无法工作?_Html_Forms_Upload - Fatal编程技术网

Html 如果没有enctype属性,为什么文件上载无法工作?

Html 如果没有enctype属性,为什么文件上载无法工作?,html,forms,upload,Html,Forms,Upload,大多数时候,文件上传错误的来源是我们忘记在HTML表单中添加enctype属性 通常,我们不需要为常规请求添加enctype属性。但是,在上传文件时,我们确实需要将其添加到HTML表单中 enctype="multipart/form-data" 我只是好奇,如果没有enctype属性,为什么上传文件不起作用?您可能想看看这里的评论: 简而言之,enctype告诉浏览器如何发送文件。如果没有正确的编码类型,它将无法发送文件。RFC 1867指定了“多部分/表单数据”enctype,您可以查看

大多数时候,文件上传错误的来源是我们忘记在HTML表单中添加
enctype
属性

通常,我们不需要为常规请求添加
enctype
属性。但是,在上传文件时,我们确实需要将其添加到HTML表单中

enctype="multipart/form-data"

我只是好奇,如果没有
enctype
属性,为什么上传文件不起作用?

您可能想看看这里的评论:

简而言之,enctype告诉浏览器如何发送文件。如果没有正确的编码类型,它将无法发送文件。

RFC 1867指定了“多部分/表单数据”enctype,您可以查看该enctype以了解更多技术概述

在HTML表单中,数据表示为多个字段。当使用多部分/表单数据作为enc类型时,浏览器将表单字段作为一系列“零件”发送,每个零件都有一个内容类型标题来描述存储在零件中的数据类型。对于普通表单字段,此内容类型通常设置为“文本/普通”。此内容类型仅在使用多部分/表单数据类型时由浏览器发送

对于类型为“file”的输入元素,内容类型为“application/octet stream”或类似内容,向服务器端软件表明字段的内容不是典型的纯文本,而是文件的内容,应以不同的方式处理

每当未使用“多部分/表单数据”时,“文件”类型的输入元素不起作用的原因是,服务器无法识别字段的内容是否与普通文本字段不同(因为除非使用多部分/表单数据,否则浏览器不会发送内容类型)因此,它将字段的内容处理为普通文本。如果使用了正确的enctype,并且服务器可以正确识别字段包含的数据类型,则服务器知道将字段的内容作为文件数据而不是文本处理,并可以正确处理它