{category}

PHP - ファイルアップロード

move_uploaded_file()

ムーブ アップローデッド ファイル(ファイルとI/O操作

意味 アップロードファイルの移動


move_uploaded_file()とは?

move_uploaded_file()関数は、アップロードされたファイルを指定した新しい場所に移動するためのPHP関数です。セキュリティチェックも行われるため、ファイルアップロード処理で安全に使用できます。

move_uploaded_file()の具体的な使い方

アップロードされたファイルの安全な移動

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['userfile'])) {
    $uploadDir = '/uploads/';
    $uploadFile = $uploadDir . basename($_FILES['userfile']['name']);

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) {
        echo "ファイル " . htmlspecialchars(basename($_FILES['userfile']['name'])) . " が正常にアップロードされました。";
    } else {
        echo "ファイルのアップロードに失敗しました。";
    }
} else {
    echo "ファイルがアップロードされていません。";
}

👇出力結果

ファイル example.txt が正常にアップロードされました。

この例では、フォームからアップロードされたファイルを安全に指定したディレクトリに移動しています。ファイル名の衝突を避けるためにbasename()関数を使用し、XSS攻撃を防ぐためにhtmlspecialchars()関数も使用しています。

ファイル拡張子の検証付きアップロード

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['userfile'])) {
    $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
    $uploadDir = '/uploads/';
    $fileInfo = pathinfo($_FILES['userfile']['name']);
    $extension = strtolower($fileInfo['extension']);

    if (in_array($extension, $allowedExtensions)) {
        $uploadFile = $uploadDir . uniqid() . '.' . $extension;
        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) {
            echo "画像ファイルが正常にアップロードされました。";
        } else {
            echo "ファイルのアップロードに失敗しました。";
        }
    } else {
        echo "許可されていないファイル形式です。";
    }
} else {
    echo "ファイルがアップロードされていません。";
}

👇出力結果

画像ファイルが正常にアップロードされました。

この例では、アップロードされたファイルの拡張子を検証し、許可された画像ファイルのみをアップロードしています。また、ファイル名の重複を避けるためにuniqid()関数を使用しています。

move_uploaded_file()に関するよくある質問

Q. move_uploaded_file()の利点は?
A. move_uploaded_file()関数は、ファイルがPHPを通じて正しくアップロードされたことを確認し、セキュリティチェックを行います。これにより、悪意のあるファイル操作を防ぐことができます。
Q. アップロード失敗の一般的な原因は?
A. アップロード失敗の一般的な原因には、ディレクトリの書き込み権限不足、ディスク容量不足、PHPの設定(upload_max_filesize、post_max_size)による制限などがあります。
Q. 一時ファイルとは何ですか?
A. 一時ファイルは、ファイルアップロード時にPHPが自動的に作成する一時的なファイルです。これは'tmp_name'キーで参照でき、スクリプトの終了時に自動的に削除されます。

move_uploaded_file()が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのmove_uploaded_file()やmkdir()、fwrite()、glob()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


PHPを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

mkdir()

新しいディレクトリを作成

種類: ディレクトリ操作

fwrite()

ファイルにデータを書き込む

種類: ファイル読み書き

glob()

パターンに一致するファイル検索

種類: ディレクトリ操作

date()

日付・時刻のフォーマット

種類: 日付時間関数

/* */

複数行コメントの記述

種類: コメント