カテゴリ: PHP 更新日: 2025/12/22

PHPで画像やPDFをアップロードする方法を初心者向けにやさしく解説!

PHP のファイルアップロード処理(画像・PDFなど)
PHP のファイルアップロード処理(画像・PDFなど)

先生と生徒の会話形式で理解しよう

生徒

「PHPを使って、自分のパソコンから画像やPDFファイルをアップロードしたいんですが、どうやればいいですか?」

先生

「はい、PHPではファイルをアップロードする機能が用意されていますよ。画像ファイルやPDFファイルなどを、サーバーに保存することができます。」

生徒

「でも、ファイルアップロードって難しそうです……」

先生

「大丈夫です!HTMLとPHPを使えば、初心者でも簡単にアップロード処理を実装できます。では、基本からゆっくり解説していきましょう!」

-

1. PHPでファイルアップロードとは?

1. PHPでファイルアップロードとは?
1. PHPでファイルアップロードとは?

ファイルアップロードとは、パソコンやスマホの中にある画像(写真)やPDFファイルなどを、Webサイトを通じてサーバーに送ることを意味します。

たとえば、履歴書をアップロードしたり、プロフィール画像を登録したりするときに使われます。

PHPでは$_FILESという変数を使って、アップロードされたファイルを受け取ることができます。

2. HTMLでアップロードフォームを作る

2. HTMLでアップロードフォームを作る
2. HTMLでアップロードフォームを作る

まず、アップロード用の画面(フォーム)をHTMLで作ります。ポイントは、formタグにenctype="multipart/form-data"を指定することです。これがないと、ファイルを正しく送ることができません。


<form action="upload.php" method="POST" enctype="multipart/form-data">
    <label>ファイルを選んでください:</label>
    <input type="file" name="myfile" accept=".jpg,.jpeg,.png,.pdf">
    <button type="submit">アップロード</button>
</form>

accept属性では、画像やPDFだけを選べるように指定しています。

3. PHPでファイルを受け取って保存する

3. PHPでファイルを受け取って保存する
3. PHPでファイルを受け取って保存する

次に、フォームから送られてきたファイルをPHPで処理します。「upload.php」というファイルに以下のようなコードを書きます。


if (isset($_FILES['myfile'])) {
    $file = $_FILES['myfile'];

    // 一時ファイルの場所
    $tmp = $file['tmp_name'];

    // ファイル名を安全なものに変更
    $name = basename($file['name']);

    // 保存先フォルダ(存在する必要あり)
    $uploadDir = 'uploads/';
    $destination = $uploadDir . $name;

    if (move_uploaded_file($tmp, $destination)) {
        echo "ファイルのアップロードが成功しました!";
    } else {
        echo "アップロードに失敗しました。";
    }
}

このコードでは、アップロードされたファイルをuploads/フォルダに保存しています。事前にこのフォルダを作っておき、書き込み可能にしておく必要があります。

4. セキュリティ対策もしっかりと

4. セキュリティ対策もしっかりと
4. セキュリティ対策もしっかりと

ファイルアップロードでは、セキュリティもとても大事です。悪意のあるファイルがアップされないように、いくつかのチェックを入れましょう。

  • 拡張子のチェック(.jpg や .pdf など)
  • ファイルサイズの制限
  • 元のファイル名を使わず、ランダムな名前に変える

たとえば、PHPで画像かどうかを確認するには以下のようにします。


$mime = mime_content_type($tmp);
$allowed = ['image/jpeg', 'image/png', 'application/pdf'];

if (in_array($mime, $allowed)) {
    // 安全なファイル形式
}
-

5. アップロードサイズの上限設定

5. アップロードサイズの上限設定
5. アップロードサイズの上限設定

PHPでは、初期状態でアップロードできるファイルサイズに上限があります。大きいファイル(例:PDFカタログなど)を扱うには、php.iniファイルで以下のように設定します。


upload_max_filesize = 10M
post_max_size = 12M

設定を変えたら、Webサーバー(ApacheやNginx)を再起動する必要があります。

6. ファイルアップロードの使いどころ例

6. ファイルアップロードの使いどころ例
6. ファイルアップロードの使いどころ例
  • プロフィール画像の登録
  • PDFの請求書や履歴書の送信
  • アルバムに画像をアップして保存

こういった機能は、ほとんどのWebサービスに必要とされる重要な機能です。PHPを使えば、自分だけのアップロード機能を簡単に作ることができます。

まとめ

まとめ
まとめ

今回は、PHPを使って画像ファイルやPDFファイルをアップロードする方法について、初心者の方でも理解しやすいように解説しました。ファイルアップロード機能は、プロフィール画像の登録や履歴書・資料の提出、写真のアルバム作成など、さまざまなWebアプリケーションにおいて欠かせない要素です。

まず最初に、HTMLのフォームを作成するときは、formタグにenctype="multipart/form-data"を指定することが重要でした。これを忘れると、どんなに正しいPHPコードを書いても、ファイルは正しく送信されません。

次にPHP側では、$_FILESというスーパーグローバル変数を使ってファイルの情報を取得し、move_uploaded_file()を使ってサーバー上のフォルダに保存する基本的な手順を紹介しました。保存先ディレクトリはあらかじめ用意し、書き込み権限を設定しておくことが必要です。

また、ファイルアップロードにはセキュリティの配慮も欠かせません。拡張子チェックやMIMEタイプの確認、ファイルサイズの制限、ファイル名のランダム化など、悪意あるファイルのアップロードを防ぐための具体的な対策方法も学びました。特に、画像やPDFに限定した許可設定を行うことで、不正なスクリプトの実行を未然に防ぐことが可能です。

加えて、サーバー側で許可する最大ファイルサイズを制御するために、php.iniファイルのupload_max_filesizepost_max_sizeの調整方法も紹介しました。サイズ制限を適切に設定しておくことで、サーバーの負荷を減らし、意図しない大容量アップロードのリスクを回避できます。

実用面では、画像ファイルのアップロードによってプロフィール写真の管理を行ったり、PDFの送信によって契約書や書類提出を行うなど、非常に幅広い活用が可能です。Webサービスを開発するうえで、PHPでのファイルアップロード機能は基本中の基本ともいえる技術です。

アップロード処理の流れ(簡易版)


1. HTMLフォームにenctypeを設定し、fileフィールドを用意する
2. PHPで$_FILESからファイル情報を取得
3. 保存ディレクトリとファイル名を指定してmove_uploaded_fileで保存
4. 必要に応じてファイル形式やサイズのチェック処理を追加

ファイル形式チェックの例


$allowed = ['image/jpeg', 'image/png', 'application/pdf'];
$mime = mime_content_type($_FILES['myfile']['tmp_name']);

if (in_array($mime, $allowed)) {
    // 安全なファイル形式と判断
}

ファイルアップロードは一見難しそうに見えますが、PHPの機能をうまく活用すれば、初心者でもしっかり実装できます。小さなアップロード機能を自分で作ってみることで、フォーム送信の仕組みやセキュリティの大切さを学ぶ良い機会にもなります。

先生と生徒の振り返り会話

生徒

PHPでファイルアップロードができるって知っていましたけど、思ったよりシンプルにできるんですね!

先生

そうだね。基本の流れを押さえれば、画像でもPDFでも簡単にアップロードできるようになるよ。

生徒

HTMLでformタグにenctype="multipart/form-data"をつけるのが大事ってことも、初めて知りました。

先生

そこを忘れがちなんだけど、フォームからファイルを正しく送るには欠かせないポイントなんだ。

生徒

PHP側では$_FILESを使えばいいんですね。あと、ファイルの安全性を確認する方法も勉強になりました!

先生

アップロード処理はセキュリティも大切だからね。MIMEタイプやファイルサイズのチェックをきちんと行うのが大事なんだ。

生徒

プロフィール画像のアップロードとか、実際に自分のポートフォリオにも使えそうです!

先生

その意気だね!今回の知識を活かして、少しずつWebアプリの機能を増やしていこう!

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPで画像ファイルやPDFファイルをアップロードするにはどのような手順がありますか?

HTMLでファイルアップロード用のフォームを作成し、PHPで送信されたファイルを$_FILESで受け取り、move_uploaded_fileで保存する手順が基本です。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.6
Java&Spring記事人気No6
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.7
Java&Spring記事人気No7
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.8
Java&Spring記事人気No8
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
-
-