プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
FuelPHP1.6、Uploadクラスを使ったら同じファイルが2つアップロードされてビビったお話。
FuelPHPのUploadクラスを使ってファイルuploadの実験を行っていたところ、
ちょいと不可解な出来事に悩まされました。

こんなHTMLファイルを作ってφ(--)
<form action="./hogep/test09" method="POST" enctype="multipart/form-data">
    <input type="file" name="file01">
    <input type="submit" name="s1" value="送信">
</form>

こんなコントローラを呼び出してφ(--)
public function action_test09()
{
    Upload::process();

    if (Upload::is_valid()){
        Upload::save();

        var_dump(Upload::get_files());
    }else{
        print "エラー";
    }
}

ファイルをアップロードしたら同じファイルが2つアップロードされちゃいました。

最初は同名ファイルのrenameをさせないように、Uploadクラスの設定ファイル

app(もしくはcore)/config/upload.php

にて

'auto_rename'    => false,

としていたのですが、その場合ファイルはアップロードされず。
試しに

'auto_rename'    => true,

にしたら、例えば「aaa.txt」をアップロードしたところ
サーバ上には「aaa.txt」と「aaa_1.txt」の2つができるってな現象でした。

なんでだよ!?Σ( ̄◇ ̄#

と、ぶーぶー文句言いながら調べたところ、原因は設定ファイルの

'auto_process'    => true,

にありました。

「auto_process」が「true」の場合「Upload::process();」の記述は不要みたいですね。
逆に言うと「Upload::process();」を書いちゃうと処理が重複しちゃうみたいです。

と言う訳で、設定ファイルの中身を

'auto_process'    => false,

にする。
もしくはコントローラ内に「Upload::process();」を書かないで

public function action_test09()
{
//消す
//    Upload::process();


    if (Upload::is_valid()){
        Upload::save();

        var_dump(Upload::get_files());
    }else{
        print "エラー";
    }
}

のようにすることで解決しました。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:FuelPHP  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事