選択したファイルをサーバーにアップロードする
早速、作ってみましょう
upload-input.php
<?php require ‘header.php’; ?> <p>アップロードしたいファイルを選択してください</p> <form action=”upload-output.php” method=”post” enctype=”multipart/form-data“> <input type=”file” name=”file”> <input type=”submit” value=”アップロード”> </form> <?php require ‘footer.php’; ?> | enctype属性にはmultipart/form-dataを指定します。 enctypeとはMIMEタイプを指定するための属性です。MIMEとはデータの種類を表現する方法や、データを変換する方法を定めた規格です。 multipart/form-dataは、HTTPでファイルをアップロードする際に使うMIMEタイプです。 type属性にはfileを選択します。 |
upload-output.php
<?php require ‘header.php’; ?> <?php if (is_uploaded_file($_FILES[‘file’][‘tmp_name’])){ | 「アップロードされたファイルの確認」 formタグのファイル選択からアップロードされたファイルは、一時的なファイルに保存されます。この一時的なファイルのファイル名は$_FILES[‘file’][‘tmp_name’]で取得できます。 その取得した一時的なファイルが、入力画面からアップロードされたファイルか否かを調べるのがis_uploaded_file(ファイル名)です。 |
if (!file_exists(‘upload’)){ mkdir(‘upload’); } | 「フォルダの作成」 file_exists関数は、引数に指定したフォルダが存在する場合、TRUEを返します。ここではフォルダが存在しない場合にフォルダ作成させてます。 「!」があるためTRUEではない場合という条件を書いてuploadというフォルダを作らせてます。 フォルダを作成するにはmkdir関数を使います。 |
$file = ‘upload/’.basename($_FILES[‘file’][‘name’]); | 「アップロードされたファイルの保存」 ・作成されたフォルダ名upload。 ・ファイル名だけを取り出すbasename関数、その引数はパス(ファイル場所を表す文字列)です。 ・アップロードされたファイルの名前を取得して、保存先のファイル名を作成する$_FILES[‘file’][‘name’] ・文字列を連結する「.」演算子を用いて、フォルダ名とファイル名を結合。 ・フォルダ名とファイル名の間は「/」で区切ります。 |
if (move_uploaded_file($_FILES[‘file’][‘tmp_name’], $file)){ echo $file, ‘のアップロードに成功しました’; echo ‘<p><img alt=”image” width=”100px” height=”100px” src=”‘, $file, ‘”></p>’; } else { echo ‘アップロードに失敗しました’; } } else { echo ‘ファイルを選択してください’; } ?> <?php require ‘footer.php’; ?> | 「アップロードされたファイルを移動する」 ・アップロードされたファイルを、保存先のファイルに移動するmove_uploaded_file(一時的なファイル、保存先のファイル) ・一時的なファイルはプログラムが終了すると削除されます。 |