将上传集成到现有表单(PHP)

时间:2011-08-16 20:55:28

标签: php html

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

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

...

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

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

...

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

你可以将属性添加到form和里面的字段,这将有效!

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

另一方面,

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

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