[請益] 用php讀取mysql中的圖檔

看板PHP作者 (FableKevinS)時間13年前 (2012/06/05 23:30), 編輯推噓3(3048)
留言51則, 6人參與, 最新討論串1/1
我要從mysql讀出一個 BLOB 的圖片檔 http://140.112.241.250/show_BLOB.php 叉燒包= = 我有參考了版上的文章 我的code如下: show_BLOB.php <HTML> <BODY> <?php include "mysql_connect.inc.php"; echo "<img src=\"showpic.php\">"; ?> </BODY> </HTML> showpic.php <?php include("mysql_connect.inc.php"); // 連接DB $result = "select IMAGE from image where type ='A' AND site = 'CV'"; $sql = mysql_query($result); list($row) = mysql_fetch_row ($sql); header( "Content-type: image/jpeg"); echo $row; ?> 其中IMAGE 就是存圖片二進位檔的欄位 屬性是 mediumblob Binary 我弄了超久都出不來, 有誰可以幫我解答一下= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.241.250

06/05 23:56, , 1F
囧...........
06/05 23:56, 1F

06/05 23:56, , 2F
一般是記錄檔案位置,然後再用讀檔去讀圖.......
06/05 23:56, 2F

06/05 23:57, , 3F
雖然也不是沒看過這樣用的,只是別太虐待資料庫啊....
06/05 23:57, 3F

06/05 23:57, , 4F
有些時間沒寫php了,不過印象中,不是用echo,是用別的東西
06/05 23:57, 4F

06/06 00:03, , 6F
這個?
06/06 00:03, 6F

06/06 00:27, , 7F
還是不行欸...
06/06 00:27, 7F

06/06 00:36, , 8F
echo $row['IMAGE'];
06/06 00:36, 8F

06/06 00:37, , 9F
show_BLOB.php 完全不需要用到php showpic.php可能有BOM?
06/06 00:37, 9F

06/06 00:37, , 10F
基本上你把header那行拿掉 就會看到錯誤訊息了
06/06 00:37, 10F

06/06 00:38, , 11F
檢查方式就自己連到showpic.php看內容是啥啊
06/06 00:38, 11F

06/06 00:41, , 12F

06/06 00:42, , 13F
我把header拿掉 是這樣的編碼
06/06 00:42, 13F

06/06 00:45, , 14F
前面有<meta http-equiv="Content-Type" content="text/h
06/06 00:45, 14F

06/06 00:46, , 15F
showpic.php是要負責吐出不多不少就是一個jpg檔
06/06 00:46, 15F

06/06 00:46, , 16F
並不是把jpg的內容混在html裡面吐出來
06/06 00:46, 16F

06/06 00:47, , 17F
沒有欸我並沒有加,就跟上面的code一樣
06/06 00:47, 17F

06/06 00:49, , 18F
那你在把header加回去,有可能是server加的
06/06 00:49, 18F

06/06 00:49, , 19F
你可以自己把那個url另存出來用16進位編輯器看
06/06 00:49, 19F

06/06 00:50, , 20F
或是mysql_connect.inc.php裡面有echo?
06/06 00:50, 20F

06/06 00:52, , 21F
應該是沒有echo,因為show_BLOB.php沒有
06/06 00:52, 21F

06/06 00:53, , 22F
不然就是db裡的內容就有問題了…
06/06 00:53, 22F

06/06 00:53, , 23F
你可以用echo substr($row,0,4);看看
06/06 00:53, 23F

06/06 00:55, , 24F
Warning: substr() expects parameter 1 to be strin
06/06 00:55, 24F

06/06 00:55, , 25F
我是用phpmyadmin存的 無設定任何函數
06/06 00:55, 25F

06/06 00:55, , 26F
oh jpg的前4個byte也看不到什麼東西XD 要用6,4
06/06 00:55, 26F

06/06 00:59, , 27F
出來都是亂碼
06/06 00:59, 27F

06/06 01:12, , 28F
我存成16位元看了
06/06 01:12, 28F

06/06 01:13, , 29F
我發現php中的編碼跟原圖的編碼不一樣欸.....
06/06 01:13, 29F

06/06 01:19, , 30F
啥編碼? 編碼不是重點啊 那是binary的東西,我重抓了一次
06/06 01:19, 30F

06/06 01:19, , 31F
前面多了一些換行符號和空白,去掉之後看是一男一女合照
06/06 01:19, 31F

06/06 01:19, , 32F
在草地上,後面還有一群人
06/06 01:19, 32F

06/06 01:20, , 33F
喔所以是多了空白?
06/06 01:20, 33F

06/06 01:21, , 34F
和換行
06/06 01:21, 34F

06/06 01:21, , 35F
確切的說是0d 0a 20也就是\r \n space
06/06 01:21, 35F

06/06 01:21, , 36F
恩我debug看看
06/06 01:21, 36F

06/06 01:23, , 37F
怎麼會多跑出來= =
06/06 01:23, 37F

06/06 01:24, , 38F
mysql_connect.inc.php裡面跑出來的
06/06 01:24, 38F

06/06 01:24, , 39F
我直接抓mysql_connect.inc.php就獲得這三個bytes
06/06 01:24, 39F

06/06 01:25, , 40F
喔我在裡面有寫例外處理
06/06 01:25, 40F

06/06 01:25, , 41F
刪掉中文字and換行?
06/06 01:25, 41F

06/06 01:27, , 42F
厄 例外沒發生的話應該也不會出現吧 檔尾沒問題嗎?
06/06 01:27, 42F

06/06 01:28, , 43F
例外發生的話應該用exit;中止後續動作 也可以送個適當的
06/06 01:28, 43F

06/06 01:28, , 44F
http status code
06/06 01:28, 44F

06/06 01:29, , 45F
我把連接寫進去showpic好了
06/06 01:29, 45F

06/06 01:31, , 46F
okㄌ= =
06/06 01:31, 46F

06/06 01:31, , 47F
原來是include有問題= =
06/06 01:31, 47F

06/06 01:32, , 48F
恭喜
06/06 01:32, 48F

06/06 01:35, , 49F
還是感謝bu大幫我debug
06/06 01:35, 49F

06/06 05:29, , 50F
你要很感謝他!找出這種問題短者一天兩天,也可能好幾週
06/06 05:29, 50F

06/09 01:20, , 51F
以前寫相簿也曾把圖塞資料庫,後來覺得效率不是很好~
06/09 01:20, 51F
文章代碼(AID): #1FpYO0bo (PHP)
文章代碼(AID): #1FpYO0bo (PHP)