PHPでファイルをアップロードする方法を現役エンジニアが解説【初心者向け】

初心者向けにPHPでファイルをアップロードする方法について解説しています。ファイルをアップロードするにはHTMLのフォームのinputのtypeをfileに設定します。PHP側ではスーパーグローバル変数の$_FILESを使ってファイルを受信することが出来ます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、PHPでファイルをアップロードする方法について解説します。

 

なお本記事は、TechAcademyのPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPでファイルをアップロードする方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

PHPでファイルをアップロードする方法

POSTメソッドの利用

PHPでファイルをアップロードする時はPOSTメソッドを利用します。POSTメソッドのPOSTとは、英語でいうと郵便という意味があります。つまり手紙を送るように送信するという意味で利用されています。

メソッドとは関数の1種です。関数とは、よく利用される処理を予め定義したものです。POSTメソッドを利用してファイルをアップロードするためにはつぎの2つの段階を経て実現します。

 

1.HTMLからPHPへファイルデータ送信するフォーム

POSTメソッドを利用するには、HTMLからPHPへファイルデータを送信する必要があります。

 

サンプルコード

<form enctype="multipart/form-data"  action="phpのURL" method="POST">
  <input type="hidden" name="name" value="value" />
  アップロード: <input name="userfile" type="file" />
  <input type="submit" value="ファイル送信" />
</form>

 

解説

<form enctype=”multipart/form-data” action=”phpのURL” method=”POST”>で、enctype=”multipart/form-data”によりデータのエンコードを行い、actionで指定したPHPのURLに対して、methodで指定しているPOSTメソッドを利用してformの送信を行う事を意味しています。

<input type=”hidden” name=”name” value=”value” />で、type=”hidden”の部分で、この行を表示しないが、name=”name”で指定したname属性を持つ、value=”value” />の値を送信する指定を行っています。ファイルをアップロードする際にファイルだけアップロードするのではなく、他のデータを送信する事が多いので便利な処理です。

アップロード: <input name=”userfile” type=”file” />で、アップロード:とHTML上で表示しており、<input name=”userfile”で指定しているファイル名のname属性で指定し、type=”file” />で、ファイルをアップロードすることを指定しています。

<input type=”submit” value=”ファイル送信” />で、<input type=”submit”の部分で、送信する処理を実装しており、value=”ファイル送信” />で送信ボタン上に、ファイル送信と表示しています。

 

2.PHP側でファイルデータをアップロードする

 

サンプルコード

<?php 
  $uploaddir = '/var/www/uploads/';
  $upload = $uploaddir . basename($_FILES['userfile']['name']);
  move_uploaded_file($_FILES['userfile']['tmp'], $upload)
?>

 

解説

ここでは、先程記載したフォームから action=”phpのURL” で送られてきたPHPであると仮定します。

$uploaddir = ‘/var/www/uploads/’;では、ファイルをアップロードするフォルダの位置を指定して、変数uploaddirに格納しています。

$upload = $uploaddir . basename($_FILES[‘userfile’][‘name’]);では、変数uploaddirで指定したフォルダに対し、変数uploadに$_FILESで取得したファイル情報を格納します。

$_FILESは、POSTで送信されたファイル情報を取得するファイルアップロード変数です。

move_uploaded_file関数を利用して、変数uploadに格納されているアップロード先に対して、$_FILES[‘userfile’][‘tmp’]というPOSTされたファイルをアップロードしています。

 

今回は、PHPでファイルをアップロードする方法について解説しました。

 

筆者プロフィール

中本賢吾(なかもとけんご)

アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

地域の職業プログラマー育成活動では、小学生がオリジナルAndroidアプリをGooglePlayでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

PHPやフレームワークのLaravelを使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。