【问题标题】:Integrate upload to an existing form (PHP)将上传集成到现有表单 (PHP)
【发布时间】:2011-08-16 20:55:28
【问题描述】:

我的工作 php 页面上有一个现有表单。

<form action="index.php" method="POST">

...

我想添加图片上传但脚本需要enctype?

<form enctype="multipart/form-data" action="index.php" method="POST">

...

是否可以仅将 enctype="multipart/form-data" 添加到提交非图像的其他输入数据的表单中,还是我的页面上需要有 2 个表单?

【问题讨论】:

  • 你试过做吗?

标签: php html


【解决方案1】:

添加属性 enctype="multipart/form-data" 不会阻止表单接受来自其他输入类型(例如文本、复选框或单选)的数据。您可以使用一个表单提交所有数据。

【讨论】:

    【解决方案2】:

    您只需将属性添加到form 和其中的字段即可!

    【讨论】:

      【解决方案3】:

      具有文件上传功能的表单也可以使用enctype="multipart/form-data" 发布其他输入字段。

      【讨论】:

        【解决方案4】:

        enctype 属性通过 MIME 类型指定表单数据在请求中的编码方式。我知道的两个有效编码类型是application/x-www-form-urlencodedmultipart/form-data

        在后台,当您不指定类型时,您会得到application/x-www-form-urlencoded。这表明在发送请求时,您的浏览器将对表单数据进行编码,就像将其作为 GET 参数发送时一样:请求正文看起来像 foo=bar&amp;bar=baz&amp;frob=this%20has%20four%20words。虽然非常适合文本字段,但这种表示对于文件传输来说非常尴尬,尤其是对于二进制文件,而二进制文件的大小可能会增加三倍。为避免发生类似情况,不能使用application/x-www-form-urlencoded 发送文件。

        另一方面,multipart/form-data 会产生非常不同的表示。我不记得确切的细节,但表单中的每个输入字段都可以有不同的 MIME 类型和编码。这意味着您的浏览器可以轻松地将二进制文件与表单数据一起发送到站点。但是,请求的一般结构会产生相对较大的开销,因此您应该仅在必要时(即要发送文件时)使用它。

        所以,是的,设置enctype="mutlipart/form-data" 仍然可以让您拥有常规字段。它们只是以另一种方式表示,但这对您来说是完全透明的。

        【讨论】:

        • 我相信有些浏览器支持text/plain,但这比 URLencoding 还要糟糕...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 2021-09-19
        • 2014-05-18
        • 2012-06-24
        • 1970-01-01
        • 2021-09-30
        相关资源
        最近更新 更多