2011-07-12 41 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

相关问题