当前位置: 首页 > 面试题库 >

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

欧阳晗日
2023-03-14
问题内容

大多数情况下,文件上传错误的根源是我们忘记了enctype在HTML表单中添加属性。

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

enctype="multipart/form-data"

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


问题答案:

“ multipart / form-data”编码类型由RFC1867指定,您可以在此处查看有关技术概述的更多信息。

在HTML表单中,数据表示为几个字段。当使用multipart /form-data作为enc类型时,浏览器将表单字段作为一系列“部分”发送,每个“部分”都有一个内容类型标头来描述存储在该部分中的数据类型。对于常规形式的字段,通常将此内容类型设置为“文本/纯文本”。仅当使用multipart
/ form-data编码类型时,此内容类型才由浏览器发送。

对于“文件”类型的输入元素,内容类型为“应用程序/八位字节流”或类似的内容,向服务器端软件指示该字段的内容不是典型的纯文本,而是文件的内容,应被不同地处理。

每当不使用“ multipart / form-data”时,“
file”类型的输入元素均不起作用的原因是由于服务器无法识别该字段的内容与普通文本字段有何不同(因为除非使用multipart / form-
data,否则浏览器不会发送content-
type),因此它将字段的内容作为普通文本处理。使用正确的enctype并且服务器可以正确识别字段包含的数据类型时,服务器知道将字段的内容作为文件数据而不是文本进行处理,并且可以对其进行适当的处​​理。



 类似资料:
  • 假设我们有一个名为的react组件,它非常聪明地在一行中显示了三个Arbityle react组件(甚至只是任意定义的dom元素)。 我们可以通过将react元素设置为状态元素并将它们作为属性传入来实现这一点,如下面的答案所建议的: 这恰恰适用于我想做的事情--我想知道的是--这是不是做事情的错误方式?有没有理由(如表现)不这样做事?

  • 问题内容: Java控制器类: html文件: 角js: 这是我在服务器日志中无法理解的错误: 问题答案: 尝试以下方法。对我来说很好。 HTML你应该有 注意输入的名称。 然后在JS控制器方法中 现在在您的Java Controller类中 希望这对您有用。并且也要进行异常处理。

  • 问题内容: Java控制器类: html文件: 角js: 这是我在服务器日志中无法理解的错误: 问题答案: 尝试以下方法。对我来说很好。 HTML你应该有 注意输入的名称。 然后在JS控制器方法中 现在在您的Java Controller类中 希望这对您有用。并且也要进行异常处理。

  • 本文向大家介绍如果组件的属性没有传值,那么它的默认值是什么?相关面试题,主要包含被问及如果组件的属性没有传值,那么它的默认值是什么?时的应答技巧和注意事项,需要的朋友参考一下 我第一反应是true,因为在官方文档中看过,也实际使用过。然后又觉得也可能是undefined(不知为啥,就是迷)。然后亲自试验了下,又看了看文档,确实是true。 https://zh-hans.reactjs.org/d

  • 我试图使一个属性文件在Java。可悲的是,当我启动Minecraft(因为这是Forge中的一个mod)时,文件不会创建。我会非常感谢任何帮助我的人。下面是代码:

  • 错误: 无法初始化主类 com.telegram.client.myClasses.Main 由以下原因引起: java.lang.NoClassDefFound错误: 组织/电报/电报机器人/泛型/长PollingBot 我做专家安装,然后运行 jar 文件,安装有一些警告,但不是错误。所以当我运行jar文件时,它会抛出这个警报。我不在我的项目中使用这个类,我不明白为什么它不起作用。P.S 抱歉