作者 主題: 上傳到 mysql 資料庫的圖檔無法顯示  (閱讀 7904 次)

0 會員 與 1 訪客 正在閱讀本文。

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
今天試了將圖檔匯入到 mysql 資料庫的功能,已經成功的將圖檔匯入了,但是在顯示的時候等了老半天 (至少有 10 分吧! :o )卻無法順利的下載檢視,請問該如何解決呢?

上傳
代碼: [選擇]

include_once("../nocache.php");
include_once("../config.php");
mysql_select_db("photo",$link) or die ("mysql_select_db() failed.");

$fd = fopen($userfile1, "rb");
$block = fread($fd, filesize($userfile1));
fclose($fd);

$block = addslashes($block);
$type1=$userfile1_type;

$str="INSERT INTO test (big) VALUES('$block')";
mysql_query($str,$link);

檢視
代碼: [選擇]
<?
include_once("../nocache.php");
include_once("../config.php");
mysql_select_db("photo",$link) or die ("mysql_select_db() failed.");

$result = "select * from test where id = '$id'";
$sql = mysql_query($result);
$row = mysql_fetch_object ($sql);

Header( "Content-type: image/gif");
echo $row->big;

?>
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

小穎

  • 俺是博士!
  • *****
  • 文章數: 1005
    • 檢視個人資料
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #1 於: 2003-07-08 15:42 »
MySQL可以存圖檔了喔?@@"

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #2 於: 2003-07-08 15:46 »
使用 blob 來儲存 "二進制" 資料啊!
在輸出的時候指定 Header Content-type ,就一直有看到有人發問 (不是這裡啦)  不過卻一直沒有去注意其中會發生的問題!
雖然會拖慢 mysql 的效能,但管理拉拉雜雜的檔案卻比較好管理,要刪除或是新增也不用管權限的問題,也可以限制大小和數量,管理的方面是比較強的 (個人認為 ^^A)
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

tonyli

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #3 於: 2003-07-08 17:23 »
用mysql存圖 .....有創意
如果sql跟web不同主機  而且sql使用量很大  不知道主機稱的住嗎?
還有  你確定圖片存成二進制之後  還可以使用嗎?

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #4 於: 2003-07-08 17:29 »
我的基本想法是:假設一個圖檔 50k
好,那如果他是以 "檔案" 的型態存在,那至少要傳輸 50k 的資料
如果是存在 MYSQL 資料庫,也至少佔了 50K 的資料,在傳輸上是差不多的,因為主要的需求為 "對外" 所以 512/512 的頻寬最主要還是會卡在 "頻寬" 吧!
至於實際上 "檔案" 和 "資料庫" 的效能差多少?拍謝!目前還沒成功不知道 ^^"
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

unitcell

  • 活潑的大學生
  • ***
  • 文章數: 411
    • 檢視個人資料
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #5 於: 2003-07-08 17:30 »
印像中(不曉得有無記錯)好像是用IBM的DB2來處理較妥.

PS:尚未用過 :(

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #6 於: 2003-07-08 17:37 »
引用
$block = addslashes($block);


請問您這一行的用意為何呢 ?
我想巳是 binary 的資料了.....所以不清楚為什麼 ?

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #7 於: 2003-07-08 17:54 »
挖勒!感謝大家的回應,莫名其妙的好了  :o
這是經過修改的程式,主要是精簡了!? (沒有寫那種很長程式的命)

瀏覽檔案上傳表單 photo.htm
代碼: [選擇]

<form enctype="multipart/form-data" method="post" action="photo.php">
  <p>
    <input name="userfile1" type="file" id="userfile1">
  </p>
  <p>
    <input type="submit" name="Submit" value="送出">
  </p>
</form>


將檔案匯入到 mysql 資料庫中 photo.php
代碼: [選擇]

<?
include_once("../config.php");
mysql_select_db("photo",$link) or die ("mysql_select_db() failed.");
$fd = fopen($userfile1, "rb");
$block = fread($fd, filesize($userfile1));
fclose($fd);
$block = addslashes($block);
$str="INSERT INTO test (big) VALUES('$block')";
mysql_query($str,$link);
?>


檢視資料庫中的圖檔 viewphoto.php
代碼: [選擇]

<?
include_once("../nocache.php");
include_once("../config.php");
mysql_select_db("photo",$link) or die ("mysql_select_db() failed.");

$result = "select * from test";
$sql = mysql_query($result);
$row = mysql_fetch_object ($sql);

Header( "Content-type: image/gif"); //$type為檔案型態,例如 html/gif 為gif檔
echo $row->big;

?>


資料庫名稱:photo 資料表:test 欄位:big 型態:blog

成功 ^^Y
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
上傳到 mysql 資料庫的圖檔無法顯示
« 回覆 #8 於: 2003-07-10 21:31 »
引述: "unitcell"
印像中(不曉得有無記錯)好像是用IBM的DB2來處理較妥.

PS:尚未用過 :(


那個東西叫 DB2 Relational Extenders