2023.11.02
【PHP】フォームでファイルをアップロードする

ValentinによるPixabayからの画像

はじめに

ファイルのアップロードのやり方をまとめます。

ファイルをアップロードしてみる

任意の名前でphpファイルを作成し、以下のように書き込んでください。

今回は1つのファイルで試します。

以下のファイルを作成して、画像ファイルを読み込ませてみてください。

//■フォーム
<form action="#" method="post" enctype="multipart/form-data">
    <p><input type="file" name="upload_file"></p>
    <button type="submit" name="operation" value="send">登録</button>
</form>

//■フォームで送信した情報を表示させる
<?php if($_POST['operation'] == "send"): ?>

//アップロードされたファイルを一時保存場所から任意の場所に移動させる
<?php move_uploaded_file($_FILES['upload_file'][tmp_name], "./{$_FILES['upload_file']['name']}"); ?>


//アップロードされたファイルをブラウザに表示
<img src="./<?=$_FILES['upload_file']['name']?>">

<?php endif; ?>

■「enctype=”multipart/form-data”」について

これを書かないとファイル名のみを送信してしまい、ファイル自体はアップロードされません。

 

■inputタグのtypeはfileを使います。

 

■「$_FILES」について

ファイルの情報は$_FILESで受け取ります。

enctype=”multipart/form-data”を指定したフォーム中で、「type=file」を指定したinputタグの値は$_FILESにセットされます。

「type=file」を指定したinputタグの値のみ$_FILESにセットされ、その他の値は通常通り$_POSTにセットされます。

$_FILESで所得できる値

以下は$_FILESをprint_rで表示させたものです。

Array
(
    [upload_file] => Array   //inputタグで設定したname属性の値
        (
            [name] => test.jpg      //元のファイル名
            [type] => image/jpeg    //MIMEタイプ
            [tmp_name] => /tmp/phph2KlYT    //ファイルの格納先
            [error] => 0    //アップロード時のエラー
            [size] => 83022  //ファイルサイズ(単位:バイト)
        )

)