LoginSignup
0
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-05

カルネージハート 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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1