HOME   入り口   MENU


No23.ねぇねぇ、これ、見て♪($_FILES変数) ----画像をアップロード




画像付きの掲示板や自分のPCにある画像を
自分のページにFTPソフトを使わないでアップロード
って「なんか難しそう・・・・」だなぁって感じがしますね。
それが意外と簡単に思えるかも。(^_^)

<INPUT NAME="img1" TYPE="file">

$img1 = $_FILES['img1'];
$img1tmp = $_FILES['img1']['tmp_name'];
$img1name = $_FILES['img1']['name'];
$img1size = $_FILES['img1']['size'];
$img1type = $_FILES['img1']['type'];

↑ 今、なんだこりゃ・・・?って思いませんでしたか?(笑)
$_FILES
「POSTのファァイルアップロードによりPHPに渡されるスーパーグローバル変数」です。

$_FILES['userfile']['name'] クライアントマシンの元のファイル名
$_FILES['userfile']['type'] アップロードされたファイルファイルのMIME型
$_FILES['userfile']['size'] アップロードされたファイルのバイトサイズ
$_FILES['userfile']['tmp_name'] サーバーにアップ後のテンポラリファイルの名前
$_FILES['userfile']['error'] ファイルアップロードに関するエラーコード

FORMのサブミットでアップロードされたファイルの情報は上の$_FILE変数で
情報を取得し、チェックや処理をすることができます。(^o^)丿

$_FILES['userfile']['error']で得たエラー情報別にメッセージを変えたりする処理も可能です。
定数 エラー内容
UPLOAD_ERR_OK 0 アップロード成功
UPLOAD_ERR_INI_SIZE 1 php.iniに設定されたupload_max_filesize値を超えてます
UPLOAD_ERR_FORM_SIZE 2 フォームで設定されたMAX_FILE_SIZE値を超えてます
UPLOAD_ERR_PARTIAL 3 一部分のみしかアップロードされていません
UPLOAD_ERR_NO_FILE 4 アップロードされませんでした

UPLOAD_ERR_FORM_SIZE
<FORM ACTION="xxx.php" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="3000">
<INPUT TYPE="file" NAME="img1" >
</FORM>

このフォームのMAX_FILE_SIZEを超えた場合のエラーです。
MAX_FILE_SIZEはfile指定行よりも上に書く必要があります。


ところでアップロードされたファイルはどこに行くのでしょうか?

アップロードされたファイルは
php.iniで指定されているデフォルトのテンポラリディレクトリに保存されます。

リクエストの終了時にファイルはテンポラリディレクトリから削除されてしまいますので、
任意の名前をつけたり、ホームページ上で閲覧するならばその場所から
public_html以下に移動する必要があります。(^_^)
<?php
if (is_uploaded_file($_FILES['img1']['tmp_name'])){
    move_uploaded_file($_FILES['img1']['tmp_name'], "/img/aaa.jpg");
}
?>




サンプル: こう書くと   ==>    こうなる!

ファイルのアップロードです。


(オマケ)
今回はスーパーグローバル変数でアップロード情報を取得する方法でしたが
PHPのバージョンにより4.1.0以前の場合はスーパーグローバル変数は使えません
定義済みの変数
が参考になります。 サーバ環境によって、
$HTTP_POST_FILES['img1']['tmp_name'];

$img1_size
などと取得の方法が変わります。
使いわけてくださいねっ(^_^)











  HOME