ひよっこPGのブログ

主に、技術メモや英語たまにギター関連のことも書いているブログです。

PHPでファイルをアップロードするサンプルを作ったときのメモ

言語は、PHPです。

PHP csv ファイルアップロードテスト(1)|ねごとめも|
こちらのサイトを参考にサンプルを作ってみた時の 調べた内容のメモです。

説明時の参考ソース
// 複数個のファイルをアップロードする場合は、name属性の値を使って識別する
<input type="file" name="uploadFile1">
<input type="file" name="uploadFile2">
<input type="file" name="uploadFile3">
アップロード後のファイル情報は、$_FILESの連想配列に設定される
$_FILE["name属性の値"]["name"] アップロードファイル名
$_FILE["name属性の値"]["type"] MIMEタイプ
$_FILE["name属性の値"]["tmp_name"] テンポラリファイル名(一時的に保存するファイルパス名)
$_FILE["name属性の値"]["error"] エラーコード 正常時 : 0を返す

参考にしたサイト : PHPリファレンス($_FILES、@move_uploaded_file())

is_uploaded_file関数

HTTP POSTによりアップロードされたファイルかどうかを調べる
引用元 : http://manual.xwd.jp/function.is-uploaded-file.html

HTTP POSTでアップロードされたファイルだった場合は、true
ではなかった場合は falseを返します。

move_uploaded_file関数

テンポラリファイルを、特定のパスにコピーする。
アップロードしたファイルは一時保存フォルダに保存されるので
そこからコピーして 特定のフォルダにコピーするわけです。

$toCopy = "upload/test.csv"; //ファイルのコピー先
$result = move_uploaded_file($_FILES["uploadFile1"]["tmp_name"], $toCopy);
// ファイルコピー成功 : true
// ファイルコピー失敗 : false

参考にしたサイト : PHP: move_uploaded_file - Manual

explode関数

ファイルの拡張子を判断するために使う。
文字列関数の一つ。
区切り文字と、分割させたい文字列を渡せば区切り文字で分割された配列が返ってくる。

// explode("区切り文字", "分割する文字列", "最大要素数 省略可");
$hoge = explode("." , "test.csv");
// $hoge[0]: "test"
// $hoge[1]: "csv"

参考にしたサイト : explode-文字列関数-初心者のPHP入門
JavaのString.splitメソッドと同じような関数ですね。

count関数

配列の個数を数える。

$hoge = array("x", "y", "z");
$length = count($hoge);
// $length = 3

参考にしたサイト : PHP: count - Manual
Javaだったら、配列にlengthプロパティを暗黙的に持っているので
$hoge.lengthで3と取得できるんですがねー。

chmod関数

ファイルのパーミッションを変更する

// chmod(ファイル名, パーミッションを表す8進数の数値)

// test.csvの所有者に読み込み、書き込みの権限を与え、その他には読み込みだけ許可する。
chmod("test.csv", 0644);

パーミッションを表す8進数の数値 仕様

一桁目 二桁目 三桁目 四桁目
0固定(8進数を表すため) 所有者自身 所有者が属するグループ その他のユーザー

数値の意味は

1 実行権限
2 書き込み権限
4 読み込み権限

複数の権限を与えたい場合は上記の数値を足し算する。
読み書きの権限与えたい場合は 2 + 4 = 6になります。
参考にしたサイト : chmod - ファイルのモードを変更する