2011-07-12 45 views
2

具體示例:我將圖像保存在Blob柱上的MySQL中(我們稱之爲'圖像')。我正在使用CakePHP(並不重要)在數據庫中顯示保存在Blob存儲中的圖像的最佳方式是什麼?

這是用戶的頭像圖像。我需要展示給他們。

現在,做這件事的最好方法是什麼?

目前,我使用單獨的操作「show_image/{user_id}」從數據庫讀取圖像,設置標題並打印內容。所以,如果我想要顯示的圖像,我只是用:

<img src="show_image/3" /> 

show_image是一樣的東西:

function show_image($user_id){ 
    $user = //read user from database 
    $image = file_get_contents($user['image']); 
    header('Content-type: ' . $user['image_type']); 
    header('Content-Disposition: attachment; filename="'.$user['image_name'].'"'); 
    echo $image; 
} 

現在,也許還有其他的方法(BASE64可能)或東西的作品比這更好做法。

謝謝!

+1

爲什麼base64會更好? :)圖像(通常)是二進制的。除非有其他充足的理由,否則讓他們以這種方式生活。但是,這*真的應該*支持緩存/「未修改」,以儘量減少浪費的帶寬。一般來說,我寧願將「數據文件」保存在數據庫本身之外......但兩種方式都有爭論。 – 2011-07-12 22:23:40

+0

謝謝兄弟。緩存!!!!你是對的。我想在base64中傳輸它在img標籤的src attr中。當然,這似乎不是一個好主意,但它是另一種選擇。 – santiagobasulto

回答

0

好吧,我已經按照通常的方式做了這個問題。

剛剛添加了@pst指向的標頭緩存事物。

0

不是將圖像保存爲二進制對象,您應該將文件上傳到某個位置並將位置字符串存儲在數據庫中。這將減少你的數據庫的負載,並且通常會容易得多。

+0

你說得對。我已經做了好幾次,但現在我的要求不同了。感謝你的回答。 – santiagobasulto

相關問題