フォームからアップロードされたファイルをPHPで処理する

Webサイトにフォームを設置し、ローカルにあるファイルを指定してサーバーにアップロードするPHPコードを解説します。アップロード時には、エラーチェックとサーバー環境に合わせた文字コード変換処理を含めます。

【コンテンツ】

  1. フォームの作成
  2. アップロードされたファイル情報
  3. エラーのチェック
  4. ファイルの保存
  5. ファイル名文字コードの変換
  6. PHP処理部のコード

【記事執筆時の環境】
PHP 5.4.19

フォームの作成

ファイルアップロードを行うフォームを作成します。
formタグの中では、enctype属性を"multipart/form-data"として、
以下のように記述します。

フォームの表示はブラウザの種類により異なりますので注意します。

<Chromeでの表示>
Chromeでのフォーム表示画面

<IEでの表示>
IEでのフォーム表示画面

アップロードされたファイル情報

アップロードされたファイルは、サーバーの「一時ファイル置き場」に保存されます。

保存時のファイル名は本来のファイル名ではなく、ランダムな名前で保存されます。
ただし本来のファイル名も情報として持っています。

アップロードされたファイル情報は、スーパーグローバル変数「$_FILES」に格納されます。
input要素にname属性で指定した名前を"userfile"とすると、ファイル情報は以下のようになります。

変数名 説明
$_FILES["userfile"]["name"] 送信されたファイル名
$_FILES["userfile"]["type"] 送信されたファイルのMIME型
$_FILES["userfile"]["size"] ファイルサイズ(バイト)
$_FILES["userfile"]["tmp_name"] 一時ファイルのパス
$_FILES["userfile"]["error"] エラーコード

エラーのチェック

アップロード時には、エラーが発生していないかチェックし処理を分岐させます。

エラーコードとして、以下の定数が定義済みです。

UPLOAD_ERR_OK:アップロードが成功した
UPLOAD_ERR_NO_FILE:アップロードされなかった(何もファイルを指定しないで送信)

その他種々のエラー定数があります。

ファイルの保存

サーバーに一時保存されたファイルを正規の指定場所に保存します。
保存するには、move_uploaded_file()関数を使って、ファイルを一時保存先から指定場所へ移動します。

【書式】
move_uploaded_file(一時ファイルパス,移動先ファイルパス);

例えば、"uploads"というディレクトリをあらかじめ作成しておき、その中にファイルを保存するコードは以下になります。

なお一時ファイルはアップロード処理が終わると自動的に削除されますので、アップロード処理内で移動させる必要があります。

ファイル名文字コードの変換

ファイル名が日本語でつけられている場合、サーバーのOSが扱う文字コードに変換しないと、ファイル名が文字化けする可能性があります。

変換には、mb_convert_encoding()関数を使います。

【書式】
mb_convert_encoding(文字列,変換後の文字コード,変換前の文字コード);

例えばPHPの文字コードUTF-8は、WindowsではCP932に変換する必要がありますので、以下のように記述します。

PHP処理部のコード

エラーチェック、ファイル保存、文字コード変換をおり込んだPHP処理部のコード例は、以下のようになります。

スポンサーリンク

特集記事

  • WordPress Image

    WordPress の基礎から応用まで
    Webサイト制作ツールとして圧倒的な人気を誇るWordPress。利用するにあたって必要な知識を体系的にまとめた記事です。
  • jQuery Mobile Image

    jQuery Mobile を基本から覚える
    スマホサイト制作に最適なフレームワークの利用方法を解説。DEMOページ・サンプルコードで動作を確認できます。

オンライン講座

Webの基礎マスター講座ページへのリンク


連載講座:WordPressで作る簡単Webサイトページへのリンク

提供しているサービス

WordPressサイト制作出張講座ページへのリンク

WordPress を利用した Webサイト制作の方法を、
あなたのオフィスにうかがいご説明いたします。
料金:¥49,500

サービス詳細ページ >>

申し込みフォーム >>


Webサイト1日公開サービスページへのリンク

一刻も早く Webサイトが必要な方のために、
一緒に作業し1日で公開までもっていきます。
料金:¥49,500

サービス詳細ページ >>

申し込みフォーム >>

スポンサーリンク

ページの先頭へ