2011-08-16 4 views
1

私は自分のPHPページに既存のフォームを持っています。アップロードを既存のフォームに統合する(PHP)

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

...

私はそれに画像のアップロードを追加したいが、スクリプトはENCTYPEが必要ですか?

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

...

それは単なる画像ではありませんか、私は2つの形態を持っている必要がない他の入力データを送信するフォームにENCTYPE =「multipart/form-data」を追加することが可能です私のページに?

+3

あなたはそれをやってみましたか? – djdy

答えて

3

enctype = "multipart/form-data"属性を追加しても、フォームがテキスト、チェックボックス、ラジオなどの他の入力タイプのデータを受け入れることはできません。 1つのフォームを使用してすべてのデータを送信できます。

1

アトリビュートをformに追加するだけで、内部のフィールドが機能します。

1

ファイルのアップロードがあるフォームでは、enctype="multipart/form-data"で他の入力フィールドもうまく投稿できます。

1

enctype属性は、MIMEタイプを通じて、フォームデータが要求にエンコードされる方法を指定します。私が知っている2つの有効な形式はapplication/x-www-form-urlencodedmultipart/form-dataです。

フードの下で、タイプを指定しないと、application/x-www-form-urlencodedが得られます。これは、リクエストを送信するときに、ブラウザがGETパラメータとして送信する場合と同じ方法でフォームデータをエンコードすることを示します。リクエスト本体はfoo=bar&bar=baz&frob=this%20has%20four%20wordsのようになります。テキストフィールドには完全に適していますが、この表現はファイル転送、特にサイズが3倍になるバイナリファイルにとってはかなり厄介です。そのようなことを避けるために、application/x-www-form-urlencodedを使用してファイルを送信することはできません。一方、非常に異なる表現をもたらす。

multipart/form-data私は正確な詳細は覚えていませんが、フォームの各入力フィールドは異なるMIMEタイプとエンコーディングを持つことができます。これは、ブラウザがフォームデータと共にサイトにバイナリファイルを簡単に送信できることを意味します。ただし、リクエストの一般的な構造は比較的大きなオーバーヘッドを作成するので、必要なとき(つまりファイルを送信するとき)にのみ使用する必要があります。

はい、設定すると、enctype="mutlipart/form-data"でも通常のフィールドを使用できます。彼らはちょうど別の方法で表されますが、それはあなたに完全に透過的です。

+0

私はいくつかのブラウザが 'text/plain'をサポートしていると信じていますが、それはURLencodingよりも悪いです... – Neil

関連する問題