MySQL数据库中存储与访问图片教程
版权申诉
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。
2018-02-12 上传
2022-06-05 上传
2023-03-09 上传
2008-10-24 上传
2012-03-28 上传
2021-01-19 上传
2010-07-21 上传
weixin_38606897
- 粉丝: 7
- 资源: 892
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍