1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

Laravelで作ったファイルアップローダーEuropaのデータ管理ついて

カルネージハート Advent Calendar 2019 1日目の記事です。

カルネージハートEXAの公式アップローダーSATLOKEはお亡くなりになりました。

Screenshot from Gyazo

が、代替アップローダーでEuropaを運営しております。M2です。
Screenshot from Gyazo

Europaのデータ管理について

通常ファイルアップローダーはS3などで管理することが多いと思いますが、Europaについてのファイル管理は直接バイナリをDBに投入して管理しております。

なぜか、、、Herokuだからです。。。 HerokuでもS3使えるやーん的なツッコミあると思いますが、作った当初はノウハウがなくというか知識g

ただLaravelだとバイナリデータ取り出してそのままDBに入れると上手くはいりません...

そこでバイナリデータをラージオブジェクト (LOB)としてInsertしています。

migrationFile.php
    public function up()
    {
        Schema::create('files', function (Blueprint $table) {
            $table->increments('id');
            $table->binary('file_data');
        });
    }
    //$hogeFileはリクエストから取得したFileデータ
    $fileData = file_get_contents($hogeFile);

    //Laravel/homesteadではPostgreSQLはpgsqlとして設定
    $db = DB::connection('pgsql')->getPdo();
    $stmt = $db->prepare("INSERT INTO files (file_data) VALUES (?)");
    $stmt->bindParam(1, $fileData, $db::PARAM_LOB);
    $stmt->execute();
    unset($db);

これで無事バイナリデータがDBに投入できます!

最後に

今回カルネージハート Advent Calendar 2019を始動しました。

事実上の最新作EXAが2010年に発売以降続編の情報が皆無ですが、一部の熱狂的ファンは大会を開催してゲームを続けています。ゲームを盛り上げることで続編も出るかもしれません。カルネジスト、ネジらーの皆様のご協力をお願いします!

カルネージハートファンのプログラミング知識を共有しましょう!

腹筋ミサイル回避でお茶を濁します

D0tVcWFUcAA-jgg.gif

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?