【 #POST ?】質問:GETとPOSTは分かったけど、POSTとFILESを同時に使う理由がわからない【 #FILES ?】
最終更新:2021年02月27日 09時42分20秒(初公開:2021年02月27日 09時42分20秒)
POSTとFILESの違い
<form method="post">
で送信できるのが$_POST<form method="post" enctype="multipart/form-data">
で<input type="file">
の内容が$_FILES
です。
ファイルを送らないならenctyleは不要です。
これで結論ついているのですが、具体的にどうなるか検証していきましょう。
サンプルコード
<h1>POSTとFILESの違いを検証する</h1>
<form method="post" enctype="multipart/form-data" name="form1">
<input type="text" name="text1" value="テキスト"> <br />
<input type="file" name="file1"> <br />
<input type="submit" value="アップロード"> <br />
</form>
<h2>出力結果確認</h2>
<?php
echo "POST" . "<pre>";
var_dump($_POST);
echo "</pre><br>";
echo "FILES" . "<pre>";
var_dump($_FILES);
echo "</pre><br>";
?>
フォームタグにデータを入れてアップロードボタンを入れるイメージです。
(画像は古い状態のものですが、表示位置が違うだけなので内容は同じです。)
出力結果
画像にもありますが、転記します。
POST
array(1) {
["text1"]=>
string(6) "テキスト"
}
FILES
array(1) {
["file1"]=>
array(5) {
["name"]=>
string(0) ""
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(4)
["size"]=>
int(0)
}
}
formのメソッドをGETにする
この場合、ファイルをサーバーに送信できません。
ファイルを入れて送信ボタンを押しても、$_FILESには何も入りません。
つまり、enctypeはgetでは使えない ということです。