PHPとPerlを使ったファイルアップロードとサーバー処理の基本
作成日:2007.11.24
ファイルアップロードフォームの作成から、PHPやPerlでのファイルの受け取り、保存方法まで、基本的な手順を解説します。
error この記事は最終更新日から17年以上が経過しています。
フォームからファイルをアップロードして、そのファイル自体をサーバーに保存したり、あるいはファイルの内容をデータベースに反映したりするようなスクリプトも、作る機会がかなり多いので、手順をメモしておきます。
フォームの html
ファイルをアップロードさせるフォームの場合、通常の form 要素とは違って、enctype 属性をつける必要があります。
<form method="POST" action="upload.cgi" enctype="multipart/form-data">
<!-- ここにフォームの内容が入る -->
<input type="file" name="uploadfile" value="" size="20" />
<input type="submit" value="アップロード" />
</form>
enctype 属性の他に注意する点としては、必ず POST メソッドを指定することが挙げられます。
GET メソッドではファイルのアップロードはできません。
アップされたファイルの受け取り方 (perl の場合)
僕自身は昔、まだ CGI.pm が perl の標準モジュールじゃなかった頃に作ったコードで、アップされたファイルの内容を受け取る処理をすることが多いですが、今は CGI.pm が標準モジュールとして最初から入っているので、これを使うのが手っ取り早いでしょう。
下記サイトが参考になります。
アップされたファイルの受け取り方 (PHP の場合)
PHP の場合は、非常に簡単です。
定義済変数 $_FILES に、アップロードされたファイルの情報が自動的に入ります。
例えば、
<form method="POST" action="upload.cgi" enctype="multipart/form-data">
<input type="file" name="uploadfile" value="" size="20" />
</form>
のように、アップロードするファイルの入力欄の名前を uploadfile とした場合、変数 $_FILES は以下のように参照できます。
- $_FILES['uploadfile']['name']
- 元のファイル名
- $_FILES['uploadfile']['type']
- ファイルの MIME-Type
- $_FILES['uploadfile']['size']
- ファイルのサイズ (バイト単位)
- $_FILES['uploadfile']['tmp_name']
- アップロードされたファイルのテンポラリ(一時)ファイルの名前(パス)
後は、サーバー上でファイルを保存するなら、 $_FILES['uploadfile']['tmp_name'] をどこかにコピーすれば良いし、ファイルが CSV 等で、その中身を見て何らかの処理をするなら、$_FILES['uploadfile']['tmp_name'] を開いて中身を読めば良いわけです。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
PHPで実現するHTML目次自動生成:見出しタグ抽出と目次リンクの出力
2025.07.31
PHPを活用して、HTML文書から見出しタグを抽出し、目次リンクを自動生成する方法を解説します。見出しに自動でIDを付与する仕組みや、抽出した情報をリスト形式で出力するサンプルコードを紹介。効率的なドキュメント構造の整備とSEO対策に繋がる実践的な手法を、わかりやすくまとめています。
PHPとPerlでファイルパーミッションを変更する方法(chmod関数)
2024.11.16
PHPとPerlには、ファイルのパーミッションを変更するためのchmod関数が標準で用意されています。この記事では、PHPとPerlそれぞれのchmod関数を使ったファイルパーミッション変更の基本的な使い方を紹介します。
Google検索でリッチリザルトを表示するパンくずリストの設定方法
2023.04.26
Googleの検索結果にパンくずリストを表示させるための構造化データの設定方法を解説します。JSON-LD形式でパンくずリストを設定する方法と、PHPでのURLエンコード方法について紹介します。
ファイルアップロードの実装手順—HTMLとPHPの基礎から学ぶ
2023.04.17
PHPを使ったファイルアップロード機能の実装方法を解説します。HTMLのフォーム設定から、PHPでのファイル受け取りと保存処理まで、基本的な流れを具体的なコード例とともに紹介。