カルネージハート Advent Calendar 2019 1日目の記事です。
カルネージハートEXAの公式アップローダーSATLOKEはお亡くなりになりました。
が、代替アップローダーでEuropaを運営しております。M2です。
Europaのデータ管理について
通常ファイルアップローダーはS3などで管理することが多いと思いますが、Europaについてのファイル管理は直接バイナリをDBに投入して管理しております。
なぜか、、、Herokuだからです。。。 HerokuでもS3使えるやーん的なツッコミあると思いますが、作った当初はノウハウがなくというか知識g
ただLaravelだとバイナリデータ取り出してそのままDBに入れると上手くはいりません...
そこでバイナリデータをラージオブジェクト (LOB)としてInsertしています。
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年に発売以降続編の情報が皆無ですが、一部の熱狂的ファンは大会を開催してゲームを続けています。ゲームを盛り上げることで続編も出るかもしれません。カルネジスト、ネジらーの皆様のご協力をお願いします!
カルネージハートファンのプログラミング知識を共有しましょう!
腹筋ミサイル回避でお茶を濁します