複数ファイルのアップロード

inputで異なったnameを使用す ることにより、複数のファイルをアップロードすることができます。

複数のファイルを一度にアップロードし、自動的にまとめられた情報を 配列で取得することが可能です。これを行うには、HTMLフォームで複数選 択可能なセレクトやチェックボックスを指定する際と同様に配列を用いた 投稿用の構文を使用する必要があります。

注意: 複数ファイルのアップロード機能は 3.0.10以降サポートされました。

例 18-3. 複数ファイルのアップロード

<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br>
  <input name="userfile[]" type="file"><br>
  <input name="userfile[]" type="file"><br>
  <input type="submit" value="Send files">
</form>

上記のフォームで投稿された場合、配列 $_FILES['userfile'], $_FILES['userfile']['name'], $_FILES['userfile']['size'] (4.1.0より前のバージョンのPHPの場合は$HTTP_POST_FILES)が設定されま す。 register_globalsがonの場合、アップロードファイ ルに関してグローバル変数も設定されます。 これらの各々は、投稿されたファイ ルに関する適当な値を有する数値を添字とする配列となります。

例えば、ファイル名が/home/test/review.html お よび/home/test/xwp.outのファイルが投稿された としましょう。この場合、 $_FILES['userfile']['name'][0]の値が review.htmlとなり、 $_FILES['userfile']['name'][1]の値が xwp.outとなります。 同様に、$_FILES['userfile']['size'][0]の値が review.htmlのファイルサイズといったようになり ます。

$_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0], $_FILES['userfile']['type'][0]も設定されます。