以下の例では、ファイルをアップロードするために
HTML フォームフィールド
<input type="file" name="f" />
を用いることを想定しています。たとえばこのようなフォームです。
単純なファイルアップロード用の HTML フォーム
単一ファイルのアップロードのサンプルを試してみるには、このようなフォームを使用します。
<?php // 以下のサンプルコードを、ここに書きます ?> <html> <head> </head> <body> <form name="fileuploadexample" method="POST" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>"> <input type="file" name="f" /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
単純なファイルのアップロード
以下のコードは、リクエストを監視し、ファイルがフォームから正常に
アップロードされたかどうかを調べます。この例の場合、ファイルは
サブディレクトリ uploads
に移動されます。
<?php
require_once "HTTP/Upload.php";
$upload = new HTTP_Upload("en");
$file = $upload->getFiles("f");
if ($file->isValid()) {
$moved = $file->moveTo("uploads/");
if (!PEAR::isError($moved)) {
echo "ファイルが uploads/ に移動されました。";
} else {
echo $moved->getMessage();
}
} elseif ($file->isMissing()) {
echo "ファイルがありません。";
} elseif ($file->isError()) {
echo $file->errorMsg();
}
?>
複数のファイルをアップロードするための HTML フォーム
複数ファイルのアップロードのサンプルを試してみるには、このようなフォームを使用します。
<?php // 以下のサンプルコードを、ここに書きます ?> <html> <head> </head> <body> <form name="fileuploadexample2" method="POST" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>"> <input type="file" name="f1" /> <input type="file" name="f2" /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
複数のファイル、より進んだチェック
複数のファイルをアップロードするには、フォームフィールドの名前
(f
) を f[]
に変更し、
この名前で複数の <input />
フィールドを
作成します。
<?php
$upload = new HTTP_Upload("en");
$files = $upload->getFiles();
foreach($files as $file){
if (PEAR::isError($file)) {
echo $file->getMessage();
}
if ($file->isValid()) {
$file->setName("uniq");
$dest_name = $file->moveTo("uploads/");
if (PEAR::isError($dest_name)) {
echo $dest_name->getMessage();
}
$real = $file->getProp("real");
} elseif ($file->isMissing()) {
echo "ファイルがありません。";
} elseif ($file->isError()) {
echo $file->errorMsg();
}
print_r($file->getProp());
}
?>