【#Laravel】postgreSQLのラージオブジェクト(BLOB)をメモリストリームにて取得する
関連記事
- 【ChatGPT o4】祝日なのに仕事ーバテすぎー今夜こそ絶命だーモルモルモル 【2025年03月20日(木)】
- 【#ChatGPT】WordPressサーバにバイナリファイルをアップするシステムをChatGPTさんに聞きまくりじゃった 【2025年03月04日(火)】
- 【#PostgreSQL】3ヶ月ぶりぐらいにSQLを眺めているが,判らん!!モルモルモル 【2024年07月25日(木)】
- 【#apache #PHP】apacheが立ち上がらなくなったー「アクセス許可で禁じられた方法でソケットにアクセスしようとしました」エラー発生 【2024年04月16日(火)】
- 【#Laravel #PHP】久しぶりにLaravelと格闘しておるがすっかり忘れちょる(汗 【2024年04月12日(金)】
難儀したぞー!(怒
C#のアプリでpostgreSQLのラージオブジェクト(BLOB)に画像ファイルを格納するシステム
WEBアプリを新規で作成して
WEB側でも画像見たい!とかって話になって
いつもどおりLaravelで作り出して
BLOBファイルをBase64エンコードして,RESTでクライアントへ送出...の作戦
んが,LaravelでBLOB,どうやって取るの?ってなったのさ...ドロドロドロ
半日以上悩んだけど,解決したんで,ソースを置いておきまする
//------------------------------ // BLOBデータを得る //$tmpOID: OID //------------------------------ public function GetBlobFromOID($tmpOID ) { $pdo = DB::connection()->getPDO(); //PDOの取得 $pdo->beginTransaction(); //BLOBアクセス時はトランザクションが必須! $stream = $pdo->pgsqlLOBOpen($tmpOID, 'r'); $local = fopen('php://memory', 'rw+'); stream_copy_to_stream($stream, $local ); fseek($local, 0, SEEK_END); //ファイル長の取得 $filelen = ftell($local); rewind($local); $result = fread($local, $filelen); //ファイル読み込み(バイナリ) fclose($local); fclose($stream ); $local = null; $stream = null; $pdo->commit(); return $result; }Laravel&postgreSQLにてBLOBにアクセスするときは
PDO
経由で行え,だそうな
fopen(‘php://memory’, ‘rw+’);
は,PHPでのメモリストリームでごわす
ここをファイルストリームにすれば,サーバ上でファイル出力に変更できまする
$resultはバイナリのデータなんで,上位層でBASE64して
あとは煮るなり焼くなりにて...モルモルモル
バグってたら許してちょ❤
コメント
【大地震】カムチャツカ半島沖合で地震 マグニチュード7.5と推定(25/9/13)
台風一過なのに今日も猛暑予想.秋が来ないぞい
【霧島山】新燃岳が噴火 噴煙高度火口上5500m(25/8/28)
日産「GT-R」生産終了 スポーツカーの開発環境 厳しさ増す
火球か?隕石か?「夜なのに明るく」「カメラが真っ白になるほどの光」九州や西日本各地で目撃あいつぐ 空気の振動も観測
ひょっとして,大規模にやらかしてました?ぎんゆぅ~さん,落ちてた模様(爆