MySQL数据库中存储与访问图片教程
版权申诉
69 浏览量
更新于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。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-06-05 上传
2023-03-09 上传
2008-10-24 上传
2012-03-28 上传
2020-09-09 上传
2010-07-21 上传
weixin_38606897
- 粉丝: 7
- 资源: 892
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍