作者FableKevinS (FableKevinS)
看板PHP
標題[請益] 用php讀取mysql中的圖檔
時間Tue Jun 5 23:30:05 2012
我要從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
1F:推 LaPass:囧........... 06/05 23:56
2F:→ LaPass:一般是記錄檔案位置,然後再用讀檔去讀圖....... 06/05 23:56
3F:→ LaPass:雖然也不是沒看過這樣用的,只是別太虐待資料庫啊.... 06/05 23:57
4F:→ LaPass:有些時間沒寫php了,不過印象中,不是用echo,是用別的東西 06/05 23:57
6F:→ LaPass:這個? 06/06 00:03
7F:→ FableKevinS:還是不行欸... 06/06 00:27
8F:推 bibo9901:echo $row['IMAGE']; 06/06 00:36
9F:→ buganini:show_BLOB.php 完全不需要用到php showpic.php可能有BOM? 06/06 00:37
10F:→ bibo9901:基本上你把header那行拿掉 就會看到錯誤訊息了 06/06 00:37
11F:→ buganini:檢查方式就自己連到showpic.php看內容是啥啊 06/06 00:38
13F:→ FableKevinS:我把header拿掉 是這樣的編碼 06/06 00:42
14F:→ buganini:前面有<meta http-equiv="Content-Type" content="text/h 06/06 00:45
15F:→ buganini:showpic.php是要負責吐出不多不少就是一個jpg檔 06/06 00:46
16F:→ buganini:並不是把jpg的內容混在html裡面吐出來 06/06 00:46
17F:→ FableKevinS:沒有欸我並沒有加,就跟上面的code一樣 06/06 00:47
18F:→ buganini:那你在把header加回去,有可能是server加的 06/06 00:49
19F:→ buganini:你可以自己把那個url另存出來用16進位編輯器看 06/06 00:49
20F:→ buganini:或是mysql_connect.inc.php裡面有echo? 06/06 00:50
21F:→ buganini:應該是沒有echo,因為show_BLOB.php沒有 06/06 00:52
22F:→ buganini:不然就是db裡的內容就有問題了… 06/06 00:53
23F:→ buganini:你可以用echo substr($row,0,4);看看 06/06 00:53
24F:→ FableKevinS: Warning: substr() expects parameter 1 to be strin 06/06 00:55
25F:→ FableKevinS:我是用phpmyadmin存的 無設定任何函數 06/06 00:55
26F:→ buganini:oh jpg的前4個byte也看不到什麼東西XD 要用6,4 06/06 00:55
27F:→ FableKevinS:出來都是亂碼 06/06 00:59
28F:→ FableKevinS:我存成16位元看了 06/06 01:12
29F:→ FableKevinS:我發現php中的編碼跟原圖的編碼不一樣欸..... 06/06 01:13
30F:→ buganini:啥編碼? 編碼不是重點啊 那是binary的東西,我重抓了一次 06/06 01:19
31F:→ buganini:前面多了一些換行符號和空白,去掉之後看是一男一女合照 06/06 01:19
32F:→ buganini:在草地上,後面還有一群人 06/06 01:19
33F:→ FableKevinS:喔所以是多了空白? 06/06 01:20
34F:→ buganini:和換行 06/06 01:21
35F:→ buganini:確切的說是0d 0a 20也就是\r \n space 06/06 01:21
36F:→ FableKevinS:恩我debug看看 06/06 01:21
37F:→ FableKevinS:怎麼會多跑出來= = 06/06 01:23
38F:→ buganini:mysql_connect.inc.php裡面跑出來的 06/06 01:24
39F:→ buganini:我直接抓mysql_connect.inc.php就獲得這三個bytes 06/06 01:24
40F:→ FableKevinS:喔我在裡面有寫例外處理 06/06 01:25
41F:→ FableKevinS:刪掉中文字and換行? 06/06 01:25
42F:→ buganini:厄 例外沒發生的話應該也不會出現吧 檔尾沒問題嗎? 06/06 01:27
43F:→ buganini:例外發生的話應該用exit;中止後續動作 也可以送個適當的 06/06 01:28
44F:→ buganini:http status code 06/06 01:28
45F:→ FableKevinS:我把連接寫進去showpic好了 06/06 01:29
46F:→ FableKevinS:okㄌ= = 06/06 01:31
47F:→ FableKevinS:原來是include有問題= = 06/06 01:31
48F:→ buganini:恭喜 06/06 01:32
49F:→ FableKevinS:還是感謝bu大幫我debug 06/06 01:35
50F:→ MOONRAKER:你要很感謝他!找出這種問題短者一天兩天,也可能好幾週 06/06 05:29
51F:→ shadowjohn:以前寫相簿也曾把圖塞資料庫,後來覺得效率不是很好~ 06/09 01:20