详解:――如何将图片储存在数据库里


Posted in PHP onDecember 05, 2006

如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。

本文概述:

。在mysql中建立一个新的数据库

。一个怎样储存文件的例子程序

。一个怎样访问文件的例子程序

在mysql中建立一个新的database

首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,

你必须做下列步骤:

。进入MySql控制器

。输入命令"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));" (不能断行)

如果没有意外,数据库 和 表 应该建立好了。

一个怎样储存文件的例子程序

用这个例子你可以通过Html表单将文件传输到数据库中。

store.php3
<?php
// store.php3 - by Florian Dittmer <dittmer@gmx.net>
?>
<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>
<?php
// 如果提交了表单,代码将被执行:
if ($submit) {
// 连接到数据库
// (你可能需要调整主机名,用户名和密码)
MYSQL_CONNECT( "localhost", "root", "password");
mysql_select_db( "binary_data");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY( "INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) 
[接上一行:] VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); 
$id= mysql_insert_id();
  print "<p>This file has the following Database ID: <b>$id</b>";
MYSQL_CLOSE();
} else {
// 否则显示储存新数据的表单
?>
<form method="post" action=" <?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description" size="40">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
</BODY>
</HTML>

如果你执行了这个程序,你将会看见一个简单的Html表单,单击“浏览”选择一个文件,然后单击提交。

当文件上传至web服务器之后,程序将会告诉你刚刚上传的文件的ID,记住这个ID,待会要用的。

一个怎样访问文件的例子程序

你可以通过这个程序访问你刚才储存的文件

<?php
// getdata.php3 - by Florian Dittmer <dittmer@gmx.net>
// 调用方法: getdata.php3?id=<id>
if($id) {
// 你可能需要调整主机名,用户名和密码:
 @MYSQL_CONNECT( "localhost", "root", "password");
 @mysql_select_db( "binary_data");
 $query = "select bin_data,filetype from binary_data where id=$id";
 $result = @MYSQL_QUERY($query);
 $data = @MYSQL_RESULT($result,0, "bin_data");
 $type = @MYSQL_RESULT($result,0, "filetype");
Header( "Content-type: $type");
echo $data;
};
?>

程序必须知道要访问那个文件, 你必须将ID作为一个参数。

例如: 一个文件在数据库中的ID为2. 你可以这样调用它:

getdata.php3?id=2

如果你将图片储存在数据库里, 你可以向调用图片一样调用它。

Example: 一个图片文件在数据库中的ID为3. 你可以这样调用它:

怎样储存大于1MB的文件:

如果你想储存大于1MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改,。

下面几条也许可以帮助你储存小于24MB的文件:

1、修改 store.php3 ,将 MAX_FILE_SIZE 的值改成 24000000。

2、修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,你必须将max_filesize(在php.ini中)的值改成24000000

3、去掉MYSQL的数据包大小限制,在一般情况下 MYSQL 小于1 MB的数据包.

4、你必须用以下参数重启你的MYSQL

/usr/local/bin/safe_mysqld -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=24M

5、如果仍然出错:

可能是超时错误,如果你通过一个很慢的连接来储存一个很大的文件,PHP缺省的时间限制为30秒。你可以将max_execution_time(在php.ini中)的值改为-1

PHP 相关文章推荐
php的大小写敏感问题整理
Dec 29 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
php获取当前url地址的方法小结
Jan 10 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
Dec 05 #PHP
PHP开发入门教程之面向对象
Dec 05 #PHP
特转载一高手总结PHP学习资源和链接.
Dec 05 #PHP
扩展你的 PHP 之入门篇
Dec 04 #PHP
用 PHP5 轻松解析 XML
Dec 04 #PHP
PHP 已经成熟
Dec 04 #PHP
PHP 选项及相关信息函数库
Dec 04 #PHP
You might like
用PHP生成自己的LOG文件
2006/10/09 PHP
开发大型PHP项目的方法
2006/10/09 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
javascript 计算两个整数的百分比值
2009/12/26 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Python 第一步 hello world
2009/09/25 Python
python基础教程之对象和类的实际运用
2014/08/29 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Puma印度官网:德国运动品牌
2019/10/06 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
工业学校毕业生自荐信范文
2014/01/03 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
一文搞懂MySQL索引页结构
2022/02/28 MySQL
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS