ファイル・画像をアップロードする最低限のサンプルコード(コピペ用テンプレ)
- 2023.01.28
- PHP
- テンプレ, ファイルアップロード
はじめに
フレームワークなどを使わない生のPHPで、写真などのファイルをサーバにアップロードするための最低限のコードを置いておきます。
ファイルアップロードの仕様は、作るものによって大きく変わります。そのため、余計なものをなるべく削ぎ落とした最低限のコードをベースに、必要なものを肉付けしていきたいと思ったりします。そういう時用です。
そのままコピペでファイルのアップロード機能が実装できます。
注意点
セキュリティやバリデーション、ユーザビリティなどはまったく考えられていません。
サンプルコード
アップロードページ
index.html
<!DOCTYPE html> <html lang="ja"> <head> <title>ファイルアップロード</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="upload_file"> <input type="submit" value="アップロード"> </form> </body> </html>
補足
actionにはPOST先のPHPファイル名を入れます。
enctype=”multipart/form-data”はファイルをPOSTするのに必須な属性です。
<input>
のnameは任意の名前です。upload.php側で受け取る時に使用します。
POSTされる側
upload.php
<?php $saveDir = './'; $savePath = $saveDir . $_FILES['upload_file']['name']; if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $savePath)) { // 成功時 } else { // 失敗時 } // アップロードページに戻る header('Location: ./index.html'); exit;
補足
$saveDirでアップロードされたファイルの保存先を指定しています。「./」だと直下に保存されます。フォルダに保存したい場合は「./data/」などとしてください(その場合は「data」フォルダをあらかじめ用意しておかないとエラーになります)
アップロードされたファイルは一時的に別の場所に保存されています。move_uploaded_file()関数で指定した場所に保存(移動)します。成功するとtrue、失敗するとfalseを返します。
$_FILES[‘upload_file’]の「upload_file」はアップロードフォームで指定した名前です。これにはいくつかの値が入っています。
・「name」元のファイル名
・「tmp_name」一時的に保存されたファイル名
・「type」ファイルのMIMEタイプ
・「size」ファイルのサイズ(単位はバイト)
・「error」アップロードに関する エラーコード
・「full_path」元ファイルのフルパス(PHP 8.1.0 以降で利用可能。正確でない場合あり)
まとめ
以上、ファイルをサーバにアップロードするための最低限のコードでした。
実際には、アップロードされたファイルのタイプやサイズでバリデーションが必要だったり、ファイル名もそのまま保存するのではなく、変更した方がセキュリティ的には良いかもしれませんね。
ぜひ、お好きなようにカスタマイズして使ってください。
-
前の記事
ローカル環境でfile_get_contentsがタイムアウト 2023.01.24
-
次の記事
記事がありません
コメントを書く