2010-07-15 101 views
0

你好我正在嘗試使用Codeigniter建立一個簡單的用戶圖像庫,用戶可以上傳圖像,然後這將自動顯示在另一個頁面上。codeigniter圖像閱讀器

我有圖像上傳完成解釋在Codeigniter的用戶指南,這工作正常轉儲圖像在一個文件夾中的根目錄只是將URL放在一個表區域,並回應這出來的作品,但這不會涵蓋所有圖像名稱。

我想知道的是,有一種方法可以讀取用戶上傳的內容,並將其自動存儲在數據庫中以回顯出來。

如果不是最好的做法是什麼?

ps新的codeigniter框架,但很熟悉PHP的MySQL非常感謝。

回答

0

我並不完全熟悉Codeigniter框架,但從標準的PHP/MySQL角度來看,這可以通過使用帶有MySQL的BLOB字段來完成。只需fread()上傳的圖像(在發送數據之前將內容添加到內容中)並使用標準SQL查詢將該二進制輸出發送到BLOB字段。之後,您可能需要創建一個單獨的文件來實際調用圖像(PHP需要重建數據中的圖像)。熟悉HTTP-HEADER「Content-Type:」以及它如何適用於圖像。

舉例來說,如果你存儲在.JPEG圖像數據庫,你將要設置

header("Content-type: image/jpeg"); 
echo $query_string_array['Image_Data_Row']; 

這將需要在它自己的文件(或文件?圖像= some_img的一部分),所以它只能顯示的圖像。但這是將圖像存儲到數據庫的基本概念;您只需將其分解,存儲信息並在需要時重新構建。

問候,
丹尼斯M.

+0

感謝,但我真的想了解如何做到這一點的笨,如果沒有其他人回來給我生病給你去試試謝謝丹尼斯, – 2010-07-15 21:00:37

+0

我只是看了這個,但你看看這個線程嗎? http://stackoverflow.com/questions/2775284/codeigniter-storing-an-image-in-the-database – RageD 2010-07-15 21:17:29

1

當使用上傳類上傳數據,可以檢索有關使用以下上傳的文件信息:

$this->upload->data(); 

這將返回一個包含名稱的數組,路徑,尺寸等。

0

正如Yorick所暗示的:上傳文件後,您可以通過$this->upload->data()方法訪問文件路徑。具體而言,$this->upload->data('full_path')。上傳後,將其分配給一個變量,然後將其發送給模型或將路徑直接插入數據庫。這將是系統上映像的完整文件路徑。如果你想,而不是存儲在HTTP訪問的路徑,你可以這樣做:

$this->load->helper('url');//load url helper if not autoloaded 
$fileName = $this->upload->data('file_name'); 
$httpPath = base_url().'uploadFolder/'.$fileName; 
$this->db->insert('image_table',array('path'=>$httpPath)); 

HTH