Ben PHP içine SQL sunucusu ikili verileri okumak için bir yol anlamaya görünüyor olamaz. Ben dosya sisteminde, SQL tablosu doğrudan görüntüyü değil depolamak mümkün olması gereken bir proje üzerinde çalışıyorum.
Şu anda, ben bu gibi bir sorgu kullanarak edilmiştir:
INSERT INTO myTable(Document) SELECT * FROM OPENROWSET(BULK N'C:\image.jpg', SINGLE_BLOB) as BLAH
Bu aslında tabloya resim eklemek için çalışıyor, ama henüz bunu almak ve geri görüntü almak için bir yol düşündüm değil.
PHP ile bu yapıyorum, ve sonuçta bunun dışında bir saklı yordam yapmak zorunda olacak, ama herkes (varbinary(MAX)
) bu ikili verileri almak için bir yol beni aydınlatmak ve anında bir görüntü oluşturabilir.
Ben bir SELECT
deyimi kullanmak ve bir görüntü olduğunu belirtti başlıklarına bir içerik türü eklemek için basit olması bekleniyor, ama sadece çalışma değil. Bunun yerine, sayfa sadece ben geçmişte karşılaştığım dosyasının adını görüntüler ve görüntü verileri ile bir hata olduğunu anlayacaksınız.
EDIT: Ben bu çözdüm. Ben kırmak için dışarı test edildi görüntüleri neden bu kadar saklı yordam okurken SQL Server yalnızca 8000 bayt maksimum gönderdiğini biraz problem oldu.
$q = "Get_Picture_Test_SP @pk_rms_id=1443546"; $res = mssql_query($q); $row = mssql_fetch_assoc($res); $image = $row['picture']; function hex2bin($h) { if (!is_string($h)) return null; $r=''; for ($a=0; $a<strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)})); } return $r; } $image = hex2bin($image); header("Content-type: image/gif"); print $image; exit; ?>
Bu benim görüntüyü göstermek zorunda nasıl. Beni yanlış anlamaya izin altıgen ucu, söz için teşekkür ederiz.