只要不會有成千上萬的圖像(或者你只是想爲昂貴的SCSI驅動器付費:)),隨意將整個圖像存儲在數據庫中。如果你不確定,文件系統也可以。
對於圖像的唯一ID,最好的方法可能是使用DB插入ID(保證唯一,無線程/衝突/哭泣)。所以這裏有一個很好的方法,假設你想保持圖像的文件系統:
create table images (
image_id int(20) primary key auto_increment, /* assumes mysql */
file_path varchar(2500) not null, /* the actual file name and full path */
file_label varchar(255), /** user's memorable name for the file */
description varchar(2500), /** user provided description of contents */
media_type varchar(100), /** something like image/jpeg; privided by php in upload */
);
,那麼你可能會想image_id用某種分類或標籤,爲user_id的連接等
編輯
添加註釋:
可以使用真正的文件名,如果你喜歡,即使你存儲它們簡單地在文件系統中的圖片ID總是建立鏈接。你只需要利用search friendly urls做這樣的事情(其中1234是圖像ID和/影像/重定向到您的PHP腳本):
mysite.com/images/db/1234/picture_of_a_cat.jpg)
然後你只重定向/圖片/ DB /你的PHP腳本。或者,如果您不想嘗試重寫它們,則可以使用$ PATH_INFO。
例如,如果您有mysite.com/images/render.php/1234/picture_of_cat.jpg:
<?php
$parts = explode("/",$PATH_INFO);
$image_id = $parts[3];
$image_from_db = null; //fetch the row from your dabatase here!
header("Content-type: ".$image_from_db['media_type']);
echo file_get_contents($image_from_db['file_path']);
祝你好運! ;)
是什麼讓你的問題具體到codeigniter?只是問,因爲類似的問題已經在網站上得到冗長的回答,所以如果沒有具體的問題,你可以找到答案。 – hakre
好吧,也許Codeigniter可能有一些庫(我提到的字符串幫手)對這個有用 – Carlo