学習をしていく中で、理解が難しかったので、要点をまとめてみました。
まず前提として、HTMLでフォーム画面に以下の記述が必要になります。
<input type="file" enctype="multipart/form-data" method="post" name="img">
//nameは任意
//enctypeは画像の情報を送信するのに必要なおまじないと思ってください。
#画像をアップロードする流れ
①移動先のディレクトリを変数に格納する
②一時的に保存するファイルを変数に格納する
③アップロードしたい画像のファイル名を変数に格納する
④move_file_uploads関数でアップロードする
#①移動先のディレクトリを変数に格納する
$uploads_dir = './uploads';
のちの記述をすっきりさせるために格納させています。
#②一時的に保存するファイルを変数に格納する
$tmp = $_FILES['img']['tmp_name'];
//imgはinputで記述したnameの中身です
var_dump($tmp);
//string(14) "/tmp/phpimzszk"
tmp_nameとはアップロードした画像ファイルをサーバー上で一時的に保存する場所のファイル名です
#③アップロードしたい画像のファイル名を変数に格納する
$name = basename($_FILES['img']['name']);
//imgはinputで記述したnameの中身です
var_dump($name);
//string(9) "melon.jpg" 画像ファイル
basename関数でファイル名を取得します。この記事がかなり分かり易かったので参考にしました。
https://www.flatflag.nir87.com/basename-844
$FILES['img']['name']がファイル名です
#④move_file_uploads関数でアップロードする
move_file_uploads($tmp, "$uploads_dir/$name");
//move_file_uploads(もとにあるファイル名, 移動先のファイル名)
詳しくはこちらをご参照ください
https://www.php.net/manual/ja/function.move-uploaded-file.php