FuelPHPでのアップロードについて書きます。

 

FuelPHPにはUploadクラスというものがあり、簡単にアップロードについて処理を行う事が出来ます。

サンプルでも書いてみます。

まずViewから。up_viewという名前で。

よし。

次にコントローラー。uploadtestというクラスで。

「例」って書いてるところは今回のサンプルのための変数とかです。ファイルサイズ表示します。

見ての通り、普通のコントローラーの中でUploadクラスを呼び出してるだけです。
ファイルサイズや拡張子を指定して、ファイル保存して、ファイルがあるかどうかチェックして、ファイルサイズを取得する。っていうのをちょっと生のPHPで検索してみるといいですね。

簡単ですね。

大体はコメントアウトの説明で分かるかと思います。

 

configで設定しているところ(15行目)

・path:ファイルの保存場所。save()関数で保存します。

・auto_rename:名前が同じファイルがアップロードされた時、末尾に「_1」「_2」を追加するかの設定。

・ext_whitelist:許可する拡張子。

・max_size:最大ファイルサイズ(※最後の方にちょっと注意書きます)

そして、Upload::process()に引数として渡してあげると、デフォルトの設定を上書きして処理してくれます。
このconfigを毎回設定するのは面倒ですね。
なので、core/config/にupload.phpがあるので、それをapp/config/にコピーして、いろいろ中身を書き換えればそれがデフォルト設定となります。

 

Upload::is_valid() (26行目)

バリデーションなのかバリッドって読むのかスマイルスマイルヴェリィドゥって読むのか分かりませんが。
つまりはconfigで設定した条件に合うかどうかのチェックです。
trueかfalseが返ってきます。
例の条件で言うと、「virus.exe」とかだと拡張子が条件に合わないのでfalseが返ってきます。
(ちなみに、拡張子なし「sample」ってファイルとかでもfalseが返ってきましたね。)
あとは、1MBを越えるファイルでもfalseが返ってきます。

 

Upload::get_files() の部分(33行目)

このget_files()は、ファイルの情報を取得します。
foreachを使ってるいるのは、引数なしでget_files()を使うと、アップロードされた全てのファイルを配列にして返してくるからです。
(確実に1つ以上アップロードされている場合get_files(0)とか出来ちゃう。)
33行目では、関数から返ってくる値を$fileとして受け取っています。
$fileはアップロードされたファイルの各種情報を収めた連想配列です。

※型とかなんか間違ってたらごめんなさい。
左から連想ワード・型名・説明

$file[‘size’] とかでファイルサイズを取得できるわけです。

 

アップロードファイルのデータサイズ

configのmax_sizeでアップロードファイルの最大サイズを指定していますが。が。が!
ここで好きなように設定できるわけではありません。
若干面倒ですが、php.iniの設定もいじらないといけないです。
また別の機会にそれ書きます。→php.iniの設定はこちらです
例のコードはあくまで例なので・・・
ファイルの保存場所なんて、公開フォルダの直下ですよ。URL打ち込めば見れちゃいますよ