SQLサーバーからPHPにバイナリデータを読み取る方法がわからないようです。ファイルシステムではなく、SQLテーブルに画像を直接保存できるようにする必要があるプロジェクトに取り組んでいます。
現在、私は次のようなクエリを使用しています。
INSERT INTO myTable(Document)SELECT * FROM OPENROWSET(BULK N'C:\ image.jpg'、SINGLE_BLOB)as BLAH
これは実際に画像をテーブルに挿入するのに問題なく機能しますが、画像を取得して画像を元に戻す方法はまだわかりません。
varbinary(MAX)
私はこれをPHPで行っており、最終的にはそれからストアドプロシージャを作成する必要がありますが、そのバイナリデータ( )を取得してその場で画像を生成する方法を誰かに教えてもらえますか。
SELECT
ステートメントを使用して、それが画像であることを示すコンテンツタイプをヘッダーに追加するのは簡単だと思っていましたが、単に機能していません。代わりに、ページには、過去に遭遇したファイルの名前が表示され、画像データのエラーであると理解されます。
編集:私はこれを理解したと思います。SQL Serverがストアドプロシージャから読み取るときに最大8000バイトしか送信しなかったため、テストしていたイメージが壊れてしまうという問題がありました。
$ q = "Get_Picture_Test_SP @pk_rms_id = 1443546"; $ res = mssql_query($ q); $ row = mssql_fetch_assoc($ res); $ image = $ row ['picture']; 関数hex2bin($ h) {{ if(!is_string($ h))はnullを返します。 $ r =''; for($ a = 0; $ a <strlen($ h); $ a + = 2){$r。=chr(hexdec($ h{$a}。$h{($ a + 1)})); } $rを返します。 } $ image = hex2bin($ image); header( "Content-type:image / gif"); $imageを印刷します。 出口; ?>
これが私が画像を表示しなければならなかった方法です。六角形の先端に言及してくれてありがとう、それは私が何が悪かったのかを理解することを可能にしました。