PHPでファイルをアップロードする方法を初心者にもわかりやすく解説!

初心者でPHPでファイルをサーバーにアップロードする方法がわからないという方がたくさんいます。特に画像ファイルのアップロードで躓いているPHP初心者の方が多いようです。この記事では、初心者でもわかりやすくできるようにPHPでのアップロード方法をお伝えします。

PHPでファイルをアップロードする方法を初心者にもわかりやすく解説!のイメージ

目次

  1. 1初心者にもわかるPHPでファイルをアップロードする仕組み
  2. 2PHPでファイルをアップロードしてみよう!
  3. 画像がアップロードできないときには?
  4. 正常にアップロードされたかチェックしてみよう!
  5. 3PHPでファイルをアップロードするときにはセキュリティに注意
  6. ファイル名はアップロード側で指定する
  7. アップロードできる拡張子は制限すること
  8. 4PHPでのファイルのアップロードに挑戦してみよう!

初心者にもわかるPHPでファイルをアップロードする仕組み

Webサイトでは、ユーザーに画像やCSVファイルなどのファイルのアップロードをお願いすることがあります。Webサイトを作成する時には、ファイルのアップロードのプログラムはPHPで記述します。

この記事では、初心者にもわかるように、PHPでファイルをアップロードする仕組みと、PHPでファイルをアップロードできるようにする方法について解説します。

まずは、PHPでファイルアップロードする仕組みについて解説します。まずはブラウザのファイルのアップロードフォームからファイルをアップロードして、この時にアップロードされたファイルはPHPが実行されているサーバーへ一時的に保管されます。その後、あらかじめmove_uploaded_file関数で指定したディレクトリへコピーされます。

ThumbPythonで簡単なDiscord Botの作り方!プログラミング初心者にもわかりやすく解説!
Discordでのやり取りにBotを活用しませんか?定番の応答や、あらかじめ決めた送信作業な...

PHPでファイルをアップロードしてみよう!

それでは実際にPHPでファイルをアップロードするためのコードを作成してみましょう。PHPでコールを作成する前に、まずはHTMLでアップロード用のフォームを作成しておきます。

この時に注意しなければいけない点は、フォームの設定で「enctype=”multipart/form-data”」を設定することです。

また、メソッドはPOSTでなくてはいけません。inputではtypi=”file”にしましょう。次のように記述します。
 

<input name="file_upload" type="file">

ここまでHTMLで準備したら、PHPを作成します。ファイルの保存先のパスを指定して、アップロードします。
 

<?php
if($_FILES['file']){
  move_uploaded_file($_FILES['file']['tmp_name'], './保存先のディレクトリ');
}
?>

アップロードされたファイルの情報としては、次の5つがあります。必要に応じて記述します。
 

項目 説明
name 元のファイル名
tmp_name サーバーに一時保存されたファイル名
error エラーが起きたときのエラー内容
type ファイルタイプ
size ファイルサイズ

画像がアップロードできないときには?

PHPで画像などのファイルをアップロードしようと思っても、うまくできないことがあります。その場合には、「tmp_name」で一時的に保存する場所を指定していないことがあります。「tmp_name」の指定をよくチェックしましょう。

正常にアップロードされたかチェックしてみよう!

ファイルがアップロードされたかどうかを確認するためには、最終的に保存するために指定したディレクトリにファイルが保存されているかどうかを確認すればOKです。こちらのディレクトリに、アップロードしたファイルが保存されていれば、アップロード成功です。

アップロードの操作を行ったはずなのに、ディレクトリに入っていない場合には、HTMLかPHPのどこかでミスがあったと考えられます。

ThumbMinecraft(マインクラフト)でプログラミングを学ぶ!子供も楽しめながら学べるおすすめの方法!
マインクラフトは子供たちの間にとても人気が高いゲームですが、実は子供のプログラミング学習にも...

PHPでファイルをアップロードするときにはセキュリティに注意

PHPでファイルをアップロードできるようにするときには、セキュリティに注意しましょう。というのは、PHPで指定しないと、ウイルスもアップロード出来てしまうためです。ウイルスのアップロードを許可しないように、次の2点をあらかじめ設定しましょう。

ファイル名はアップロード側で指定する

ファイル名はユーザーがアップロードするときのファイル名で保存せずに、プログラム側で指定するようにしましょう。セキュリティを強化する意味と、アップロードされたファイル名が被らないようにする意味があります。

アップロードできる拡張子は制限すること

上記のプログラムだけでは、すべてのファイルをアップロード出来てしまいます。しかし、アップロードして欲しいファイルの種類は、画像やテキスト、CSVなど、サイトによって違うはずです。そこで、アップロードできる拡張子を、プログラム側で制限するようにしましょう。そうすれば、不審なファイルがアップロードされることを防ぎます。

Thumbプログラミング学習アプリのおすすめ11選!子供&初心者向け入門編の勉強に役立つ無料アプリも紹介!
プログラミング学習アプリのおすすめ11選、子供&初心者向け入門編の勉強に役立つ無料アプリを解...

PHPでのファイルのアップロードに挑戦してみよう!

この記事では、PHPでファイルをアップロードする方法を解説してきました。PHPでファイルのアップロードフォームを記述するのはとても便利ですが、セキュリティ面への配慮が必要です。ぜひ安全にサイトを運用できる使い勝手のいいアップロードフォームを作成してみましょう。

関連するまとめ

Original
この記事のライター
K.C
皆様のお役に立てる情報をお届けするために日々精進していきます。どうぞよろしくお願いします。