2013.
07.
29
03:25:26
どうやらFuelPHPのファイルアップロードはやり方が2つあるらしい。
ひとつは「Input::file()」でファイルを受け取るやり方。
例えばこんな感じφ(--)
要するに普通のPHPの「$_FILE」を使うのと一緒ですね。
ちなみにコードを見やすくするためにエラー処理は省いてあります。
実際にはもうちょっとあれやこれやとやることになるでしょう。
もうひとつは「Uploadクラス」を使うやり方。
FuelPHPでファイルのアップロード関連の情報を探すと、大抵はこちらが出てきます。
せっかく部品を用意したんだからそっち使え。ってことですかね(--?
Uploadクラスの使い方ですが、大抵はまず最初に設定ファイル
を
としてコピーしろと書いてあります。
これはまぁ「core/」の中をなるべく変更するなって理由でしょうね。
「app/」にコピった設定ファイルの中身は「core/」の設定を上書きするので
設定値の変更は「app/」にコピった「upload.php」に書きなさいなのでしょう。
「取りあえず動かしてみたいだけだから設定なんて変えないよ」な人は
この工程(upload.phpのコピー)を飛ばしても特に支障はありません。
設定項目についての説明は書くのが面倒くさいので省略します。
http://press.nekoget.com/fuelphp_doc/classes/upload/config.html
を見て適当に調整してください。
ちなみに
・auto_process
・path
・auto_rename
・overwrite
は意識して確認しておいた方が良いと思います。
「auto_process」は「Upload::process();」の有無に影響します。
※詳細は「Uploadクラスを使ったら同じファイルが2つアップロードされてビビったお話。」をご覧ください
「path」はファイルのアップロード先です。
初期値は空になっています。
アップロードしたファイルが行方不明にならないようにご注意ください。
「auto_rename」「overwrite」は同名ファイルの上書き関連です。
※詳細は「Uploadクラスを使って同名のファイルをアップロードしたときに上書きする。」をご覧ください
ここまでが設定ファイルのお話(--)b
あと事前準備として「finfo_open()」が有効かを確認しておくと後が楽です。
※詳細は「「Call to undefined function FuelPHP\Upload\finfo_open()」エラー」をご覧ください
ほんで、実際のコードは例えばこんな感じφ(--)
「Upload::process()」は設定ファイルの「auto_process」が「true」の場合は不要です。
「Upload::is_valid()」がアップロード対象のファイルのチェックです。
そして「Upload::save()」で実際にアップロードしたファイルを保存しています。
おまけ的に「Upload::get_files()」ではアップロードしたファイルの中身や付帯情報、
「Upload::get_errors()」ではエラーの情報が取得できます。
細かいあれやこれやはそのうち見ていくかもしれませんが、今日のところはそんな感じ(--)ノ
ひとつは「Input::file()」でファイルを受け取るやり方。
例えばこんな感じφ(--)
public function action_test08()
{
$p_file = Input::file();
foreach($p_file as $file){
if(is_uploaded_file($file['tmp_name'])){
move_uploaded_file($file['tmp_name'], $file['name']);
}
}
}
{
$p_file = Input::file();
foreach($p_file as $file){
if(is_uploaded_file($file['tmp_name'])){
move_uploaded_file($file['tmp_name'], $file['name']);
}
}
}
要するに普通のPHPの「$_FILE」を使うのと一緒ですね。
ちなみにコードを見やすくするためにエラー処理は省いてあります。
実際にはもうちょっとあれやこれやとやることになるでしょう。
もうひとつは「Uploadクラス」を使うやり方。
FuelPHPでファイルのアップロード関連の情報を探すと、大抵はこちらが出てきます。
せっかく部品を用意したんだからそっち使え。ってことですかね(--?
Uploadクラスの使い方ですが、大抵はまず最初に設定ファイル
fuel/core/config/upload.php
を
fuel/app/config/upload.php
としてコピーしろと書いてあります。
これはまぁ「core/」の中をなるべく変更するなって理由でしょうね。
「app/」にコピった設定ファイルの中身は「core/」の設定を上書きするので
設定値の変更は「app/」にコピった「upload.php」に書きなさいなのでしょう。
「取りあえず動かしてみたいだけだから設定なんて変えないよ」な人は
この工程(upload.phpのコピー)を飛ばしても特に支障はありません。
設定項目についての説明は書くのが面倒くさいので省略します。
http://press.nekoget.com/fuelphp_doc/classes/upload/config.html
を見て適当に調整してください。
ちなみに
・auto_process
・path
・auto_rename
・overwrite
は意識して確認しておいた方が良いと思います。
「auto_process」は「Upload::process();」の有無に影響します。
※詳細は「Uploadクラスを使ったら同じファイルが2つアップロードされてビビったお話。」をご覧ください
「path」はファイルのアップロード先です。
初期値は空になっています。
アップロードしたファイルが行方不明にならないようにご注意ください。
「auto_rename」「overwrite」は同名ファイルの上書き関連です。
※詳細は「Uploadクラスを使って同名のファイルをアップロードしたときに上書きする。」をご覧ください
ここまでが設定ファイルのお話(--)b
あと事前準備として「finfo_open()」が有効かを確認しておくと後が楽です。
※詳細は「「Call to undefined function FuelPHP\Upload\finfo_open()」エラー」をご覧ください
ほんで、実際のコードは例えばこんな感じφ(--)
public function action_test09()
{
Upload::process();
if (Upload::is_valid()){
Upload::save();
var_dump(Upload::get_files());
var_dump(Upload::get_errors());
}else{
print "エラー";
}
}
{
Upload::process();
if (Upload::is_valid()){
Upload::save();
var_dump(Upload::get_files());
var_dump(Upload::get_errors());
}else{
print "エラー";
}
}
「Upload::process()」は設定ファイルの「auto_process」が「true」の場合は不要です。
「Upload::is_valid()」がアップロード対象のファイルのチェックです。
そして「Upload::save()」で実際にアップロードしたファイルを保存しています。
おまけ的に「Upload::get_files()」ではアップロードしたファイルの中身や付帯情報、
「Upload::get_errors()」ではエラーの情報が取得できます。
細かいあれやこれやはそのうち見ていくかもしれませんが、今日のところはそんな感じ(--)ノ