MySQL数据库中存储与访问图片教程

版权申诉
22 下载量 67 浏览量 更新于2024-09-12 收藏 37KB DOC 举报
"在MySQL数据库中直接储存图片的教程" 在MySQL数据库中直接存储图片是一种常见的数据存储方式,尤其在需要将图片与数据库中的其他数据关联时。以下是如何实现这一功能的详细步骤: 1. 创建数据库和表 首先,你需要在MySQL中创建一个新的数据库来存放图片数据。例如,你可以命名为“binary_data”。使用MySQL命令行工具,执行以下语句来创建数据库和对应的表: ```sql CREATE DATABASE binary_data; USE binary_data; CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50) ); ``` 这里,`bin_data`字段是用于存储图片的二进制数据,类型为LONGBLOB,可以容纳较大的文件。 2. 储存文件的例子程序 要将图片上传到数据库,你可以编写一个PHP脚本,如`Store.php3`。以下是一个简单的示例: ```php <?php // store.php3 - by Florian Dittmer <dittmer@gmx.net> // 如果表单已提交,执行以下代码 if ($submit) { // 连接数据库(请根据实际情况修改主机名、用户名和密码) MYSQL_CONNECT("localhost", "root", "password"); mysql_select_db("binary_data"); // 读取并转义文件数据 $data = addslashes(fread(fopen($_FILES['form_data']['tmp_name'], "r"), $_FILES['form_data']['size'])); // 插入数据到数据库 $result = MYSQL_QUERY("INSERT INTO binary_data (description, bin_data, filename, filesize, filetype) VALUES ('".$_POST['description']."', '$data', '".$_FILES['form_data']['name']."', '".$_FILES['form_data']['size']."', '".$_FILES['form_data']['type']."')"); } ?> ``` 上述脚本处理HTML表单提交的图片文件,将其读入内存并转义后存入数据库。表单字段应包括`description`(图片描述),`form_data`(图片文件)等。 3. 访问文件的例子程序 要从数据库中取出图片并显示,可以创建另一个PHP脚本,例如`Retrieve.php`: ```php <?php // retrieve.php // 连接数据库 MYSQL_CONNECT("localhost", "root", "password"); mysql_select_db("binary_data"); // 查询数据库获取图片数据 $result = MYSQL_QUERY("SELECT * FROM binary_data WHERE id = ".$_GET['id']); $row = MYSQL_FETCH_ASSOC($result); // 输出二进制数据作为图片 header("Content-type: " . $row['filetype']); echo stripslashes($row['bin_data']); ?> ``` 这个脚本根据用户请求的图片ID从数据库中获取记录,设置正确的MIME类型,并输出图片的二进制数据,浏览器会将其解释为图片并显示。 总结: 在MySQL中直接存储图片涉及到创建特定的数据库结构,编写处理文件上传和下载的PHP脚本,并正确处理二进制数据。这样做可以方便地将图片与数据库中的其他信息结合,但需要注意的是,这种存储方式可能会占用大量数据库空间,且查询效率相对较低。在大型项目中,通常会将图片存储在文件系统中,而数据库只存储图片的路径或URL。