如何使用PHP从MySQL数据库存储和检索图像?

如何使用PHP从MySQL数据库存储和检索图像?

如何在MySQL中插入图像,然后使用PHP检索图像?

我在这两个领域的经验有限,我可以使用一些代码来让我开始弄清楚这一点。


海绵宝宝撒
浏览 506回答 3
3回答

蓝山帝景

首先,创建一个MySQL表来存储图像,例如:create table testblob (     image_id        tinyint(3)  not null default '0',     image_type      varchar(25) not null default '',     image           blob        not null,     image_size      varchar(25) not null default '',     image_ctgy      varchar(25) not null default '',     image_name      varchar(50) not null default '');然后,您可以将图像写入数据库,如下所示:/***  * All of the below MySQL_ commands can be easily  * translated to MySQLi_ with the additions as commented  ***/ $imgData = file_get_contents($filename);$size = getimagesize($filename);mysql_connect("localhost", "$username", "$password");mysql_select_db ("$dbname");// mysqli // $link = mysqli_connect("localhost", $username, $password,$dbname); $sql = sprintf("INSERT INTO testblob     (image_type, image, image_size, image_name)     VALUES     ('%s', '%s', '%d', '%s')",     /***      * For all mysqli_ functions below, the syntax is:      * mysqli_whartever($link, $functionContents);       ***/     mysql_real_escape_string($size['mime']),     mysql_real_escape_string($imgData),     $size[3],     mysql_real_escape_string($_FILES['userfile']['name'])     );mysql_query($sql);您可以在以下网页中显示数据库中的图像:$link = mysql_connect("localhost", "username", "password");mysql_select_db("testblob");$sql = "SELECT image FROM testblob WHERE image_id=0";$result = mysql_query("$sql");header("Content-type: image/jpeg");echo mysql_result($result, 0);mysql_close($link);

LEATH

不要将图像存储在数据库中,而是将它们存储在磁盘中的文件夹中,并将其存储在数据库中。

aluckdog

请注意,从DB提供的映像通常是非常多的。多比从磁盘为他们服务要慢。您将启动一个PHP进程,打开一个DB连接,让DB像文件系统一样从同一个磁盘和RAM读取图像数据,通过几个套接字和缓冲区传输它,然后通过PHP进行推送,这在默认情况下使它不可缓存,并增加了块HTTP编码的开销。OTOH现代Web服务器只需很少经过优化的内核调用(内存映射文件和传递给TCP堆栈的内存区域)就可以提供映像,这样它们甚至不会复制内存,而且几乎没有开销。这与在一台机器上并行处理20或2000张图像是有区别的。所以别这么做除非您绝对需要事务完整性(实际上,这甚至可以通过DB中的图像元数据和文件系统清理例程来完成),并且知道如何改进PHP对HTTP的处理,使之适合于图像。
打开App,查看更多内容
随时随地看视频慕课网APP