PHPのファイルアップロードで挫折しない

パソコン

コツコツPHPを勉強していて、入門書も半分に差し掛かり難しくなってきた。

ファイルのアップロードのソースが、理解不能。

色々と見慣れない関数が出てくる。

<?php
if(is_uploaded_file($_FILES['file']['tmp_name'])){
    if(!file_exists('upload')){
        mkdir('upload');
    }
    $file='upload/'.basename($_FILES['file']['name']);
    if(move_uploaded_file($_FILES['file']['tmp_name'], $file)){
        echo basename($file), 'のアップロードに成功しました';
        echo '<p><img src="', $file, '"></p>';
    }else{
        echo 'ファイルのアップロードに失敗しました';
    }
}else{
    echo 'ファイルを選択してください';
}

分からない部分は

  • is_uploaded_file
  • $_FILES[‘file’][‘tmp_name’]
  • !file_exists
  • mkdir
  • basename
  • move_uploaded_file

7行ぐらいでファイルの処理を行っているが、そのうち6行に知らないものが含まれている。

これだけわからないと、英文でも全く分からなくなる。

スポンサーリンク

is_uploaded_file関数

is_uploaded_file関数は、HTTP POSTでアップされたファイルか調べるもの
アップされたファイルは一旦一時ファイルとして保存されている。
調べるファイルの指定で$_FILES[‘file’][‘tmp_name’]が出てくる。
これが、一時ファイル名に相当する。

$_FILES

$_FILESはグローバル変数という物

フォームからpostされたファイルに対して、5つの値を持っている

ファイル名name
MIMEタイプtype
一時ファイル名tmp_name
エラーコードerror
ファイルサイズsize

$_FILES[‘file’][‘tmp_name’]この場合は
name属性fileでpostされたファイルの、一時ファイル名と指定されている。

!file_exists

file_existsこれはファイル(フォルダ)が存在するか調べる関数
その先頭に!が付いている。
!が付くと条件式が逆の意味になる。
なので、ファイルが存在しない場合以下の条件に続く。

mkdir

フォルダを指定したディレクトリに作る

’upload’相対パスがないので、このphpファイルと同じ所に、この名前でフォルダを作る。

basename

hoge/php/hoge.pngのように値があった場合、
最後のファイル名を取得する。

今回は、ファイル名のみが値となっていた。

不正なパスが含まれることもあるので使われている。

move_uploaded_file

アップロードされた一時ファイルを保存する

move_uploaded_file(一時ファイル, 保存先の指定)

まとめ

$_FILESの変数がわかれば、意外と難しくない。
連想配列のような扱いだろうか、
必要なname属性値の、欲しい値を指定するだけ。

分からない関数、変数が多いと全く理解できないのは当然。

英語の単語がわからず穴が開いている状態。

コツコツ調べれば、わかる。

わからない時は、昼寝する。

コメント

タイトルとURLをコピーしました