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()に関するよくある質問
move_uploaded_file()が学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのmove_uploaded_file()やmkdir()、fwrite()、glob()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
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」カテゴリーが追加されましました!