.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 5
.
<< Prev
セッション関連関数
« INDEX »
PHP WEB要素編
Next >>
定義済み変数によるアップロード情報の取得
作成日:2006/05/18

2F ファイルのアップロード

 PHPではpostメソッドによるファイルアップロードの機構をサポートしています。

 アップロードされたファイルに関する情報は定義済み変数( $_FILES )によって取得する事ができます。 PHPは実際にアップロードされたファイルを一時ファイルとしてシステムに保存します。 スクリプトではこの一時ファイルを move_uploaded_file() 関数によって目的の場所に移動します。 以下にファイルアップロードの例を示します。

2F.1 ファイルアップロードの例

ATTACHfile-upload.php
<?php
$upload = $_FILES['upload'];

if (isset($upload['error']) && ($upload['error']==UPLOAD_ERR_OK)){
  $image_path = getcwd() . "/upload/" . $upload['name'];
  $image_url  = "upload/" . $upload['name'];

  move_uploaded_file($upload['tmp_name'], $image_path) Or
    die ("Upload Error: {$upload['name']}");
}
?>

<html><body>

<form enctype="multipart/form-data" action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="10000">
Upload File <input name="upload" type="file"><br>
Comment <input name="comment" type="text"><br>
<input type="submit">
</form>

<?php
// アップロードした画像と画像ファイル格納場所の表示(Windowsの場合)
if ($image_url){
  echo "<img src=\"" . $image_url . "\">\n";
  $output = htmlspecialchars(shell_exec("dir upload"));
  echo "<pre>\n{$output}\n</pre>";
}
?>

</body></html>

ファイルアップロードのフォーム
  • ファイルをアップロードするフォームのエンコードタイプ multipart/form-data です。
  • input要素 file の名前(上の例ではupload)が $_FILES のキーになります。
  • input要素 hidden の MAX_FILE_SIZE フィールドを置いて送信ファイルの最大サイズを制限する事ができます。
  • 最大サイズはvalue値で指定し単位はバイトです。
    MAX_FILE_SIZE フィールドはfileの前に置く必要があります。
  • 他のフォームと同様にtextフィールドの値は $_GET または $_POST ( 上例の場合は$_POST['comment'] ) で取得できます。
PHPマニュアルでは、 MAX_FILE_SIZE で指定された値はブラウザへの勧告であるとなっていますが、 どのような規格に基づくものか確認できませんでした。 しかし手元の実験(IE6,Firefox1)では、確かに MAX_FILE_SIZE を指定する事で送信サイズを制限する事ができました。 詳しい方はご指導下さい。
<< Prev
セッション関連関数
« INDEX »>
Page Top
Next >>
定義済み変数によるアップロード情報の取得

.