PHPとPerlを使ったファイルアップロードとサーバー処理の基本
2007.11.24
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'] を開いて中身を読めば良いわけです。
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でのファイル受け取りと保存処理まで、基本的な流れを具体的なコード例とともに紹介。
URLエンコード・デコードの実装方法(Perl、PHP、JavaScript対応)
2009.12.02
URLに2バイト文字を含めるためのエンコード・デコード方法を、Perl、PHP、JavaScriptの3言語でまとめました。各言語のシンプルな関数を使った実装例を紹介し、文字列を正しく処理する方法を解説します。