【#Laravel】postgreSQLのラージオブジェクト(BLOB)をメモリストリームにて取得する
関連記事
- 【#PostgreSQL】太古の昔から動いているシステムのレコード,手修正作業をするなど,と 【2023年10月06日(金)】
- 【#PostgreSQL】テーブルから取得したレコードセットをCSVへ落とそうとすると,空ファイルが出来る...ドロドロドロ 【2023年03月08日(水)】
- 仕事オワタ 昼寝しよ(GRB爆 【2023年02月23日(木)】
- 【#PostgreSQL】鬼のような4本のSQLを書き上げた 【2023年01月13日(金)】
- 【#PostgreSQL】某改造案件,凶悪なSQLを書かないといけないじゃないっすかっ!計4本(汗 【2023年01月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して
あとは煮るなり焼くなりにて...モルモルモル
バグってたら許してちょ❤
コメント
【#巨大地震】フィリピンでM7.6の地震 津波注意報発令中(23/12/3)
食欲が無いでがす
【#地震】北マリアナ諸島M7.1 (23/11/24)
【#地球寒冷化】宮崎~清武 11月なのに雪が舞ってる これは人類滅亡!(23/11/18)
NTT広報室が楽天・三木谷氏の発言に「ナンセンス」と反論 その理由は?
ダンロップフェニックスゴルフ 前回王者の比嘉選手 宮崎県入り(23/11/15)
走行中の軽自動車からタイヤ外れ女の子に当たる 意識不明 札幌
今朝は4℃台の気温 寒い寒い!高千穂五ヶ瀬は氷点下じゃげ(23/11/14)
今朝は寒いの 最低気温7℃じゃったげ(23/11/13)