技術資料

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'] を開いて中身を読めば良いわけです。

この記事を書いた人

※上が私です。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

PHPとPerlでファイルパーミッションを変更する方法(chmod関数)

2024.11.16

PHPとPerlには、ファイルのパーミッションを変更するためのchmod関数が標準で用意されています。この記事では、PHPとPerlそれぞれのchmod関数を使ったファイルパーミッション変更の基本的な使い方を紹介します。

Perl PHP

Google検索でリッチリザルトを表示するパンくずリストの設定方法

2023.04.26

Googleの検索結果にパンくずリストを表示させるための構造化データの設定方法を解説します。JSON-LD形式でパンくずリストを設定する方法と、PHPでのURLエンコード方法について紹介します。

Google構造化データ HTML PHP

ファイルアップロードの実装手順—HTMLとPHPの基礎から学ぶ

2023.04.17

PHPを使ったファイルアップロード機能の実装方法を解説します。HTMLのフォーム設定から、PHPでのファイル受け取りと保存処理まで、基本的な流れを具体的なコード例とともに紹介。

HTML PHP

URLエンコード・デコードの実装方法(Perl、PHP、JavaScript対応)

2009.12.02

URLに2バイト文字を含めるためのエンコード・デコード方法を、Perl、PHP、JavaScriptの3言語でまとめました。各言語のシンプルな関数を使った実装例を紹介し、文字列を正しく処理する方法を解説します。

JavaScript Perl PHP

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP