2

laravel アプリ用の HTML5 ドラッグ アンド ドロップ ファイル アップロードを作成しましたが、すべてのコントローラーで使用できる変数としてファイル名を設定するのに問題があります。

ユーザーがファイルをアップロードするために行うプロセスは、メンバー情報を入力することです。フォームの送信時に、ajax を介して新しいステップが読み込まれます。このステップは、HTML5 ドラッグ アンド ドロップ ファイル アップロードです。

問題はファイルのアップロードではなく、その機能は正常に動作します。私の問題は、アップロード アクション (以下) です。

public function action_upload()
{
    $uploadDir = "public/uploads/";
    $file = Input::get('value');
    $name = Input::get('name');

    //Get the mime
    $getMime = explode(".", $name);
    $mime = end($getMime);

    //seperate the data out
    $fileData = explode(',', $file);

    //Encode it correctly
    $encodedData = str_replace(' ', '+', $fileData[1]);
    $decodedData = base64_decode($encodedData);

    //create a random name, will help with not overwriting filesystems.
    $this->randomName = substr_replace(sha1(microtime(true)), '', 12).'.'.$mime;

    if(file_put_contents($uploadDir.$this->randomName, $decodedData)) {
        echo $this->randomName.":uploaded successfully";
    } else {
        echo "Something went wrong. Check that the upload is not corrupted";
    }
}

ご覧のとおり、変数randomNameを設定しています。ajax/HTML5 のアップロードが完了すると、次のコードが呼び出されます。

public function action_source()
{
    if(Input::get('step') == "step3") {
        //echo $this->randomName;
        return json_encode(array('next' => $this->data['url']."/project/launch", 'file' => $this->randomName));
    }
    return View::make('project.source', $this->data);
}

ただし、返されるJSONオブジェクトでは、次のfileように返されNULLますが、クラスの開始時に理由がわかりpublic $randomNameません。$this->randomName;

関数呼び出しの順序が正しければ、

action_upload() > action_source()

にアクセスできないのはなぜ$randomNameですか?

4

0 に答える 0