2011-08-16 55 views
1

我的工作php頁面上有一個現有的表單。將上傳集成到現有的表單(PHP)

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

...

我要上傳圖片添加到它,但腳本需要加密類型?

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

...

是否有可能將ENCTYPE =「的multipart/form-data的」只添加到提交其他輸入數據的形式不是圖像或做我需要有2種形式在我的頁面上?

+3

你試過嗎? – djdy

回答

3

添加屬性enctype =「multipart/form-data」不會阻止表單接受來自其他輸入類型(如文本,複選框或收音機)的數據。您可以使用單一表格提交所有數據。

1

您可以將屬性添加到form和該字段內,並將工作!

1

具有文件上傳的表單也可以在enctype="multipart/form-data"上發佈其他輸入字段。

1

enctype屬性通過MIME類型指定表單數據在請求中的編碼方式。我知道的兩個有效的enctypes是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"仍然會讓你有固定的領域。他們只會以另一種方式表現出來,但這對你來說是完全透明的。

+0

我相信有些瀏覽器支持'text/plain',但這比URLencoding更糟糕...... – Neil