【#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割 環境省まとめ、出没は最多2万件
「ニュウハクシミ」紙を食べる害虫 生息19都道府県に拡大
文化の日な祭日らしい.文化的に休むもうず?
【#HTVX】新型宇宙輸送船HTV-X 油井さんがロボットアームでキャッチ
【冬】来週11℃予想とか出てきてる.秋があったのか,今年(25/10/23)
【ツル】出水平野に冬の訪れを告げるツル第一陣・今季初飛来 鹿児島(25/10/21)
都城でプロ野球・ロッテ1軍が春季キャンプ実施へ
山形で開催の映画祭 監督など国内外の参加者が“芋煮”味わう
連休なんで生駒高原でコスモスを愛でてきた
連休の中日ですの.天気は良くなる方向じゃげ