【#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して
あとは煮るなり焼くなりにて...モルモルモル
バグってたら許してちょ❤
コメント
今日は城主生誕記念日で日本国は祝日,らしい...
兵庫 城崎温泉 旅館で火事 ほぼ消し止められる
東海道新幹線 停電のため運転見合わせ 区間が拡大 原因調査中
【霧島山】新燃岳:活発化してた火山性地震,ピタッと止まった(25/4/26)
今日は落雷,ひょうに厳重警戒じゃげな(25/4/14)
中日本高速道路 ETCシステム障害 7都県 一部の専用レーン閉鎖(25/4/6)
iPhone米価格は相互関税で30─40%上昇か、上位機種は2300ドルも
【地震】大隅半島東方沖で地震:宮崎市などで震度4 津波の心配なし(25/4/3)