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


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的类 功能齐全的发送邮件类
Oct 09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
浅析php学习的路线图
Jul 10 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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 已经成熟
2006/12/04 PHP
一段php加密解密的代码
2007/07/16 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
php 伪静态之IIS篇
2014/06/02 PHP
smarty简单入门实例
2014/11/28 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python 含参构造函数实例详解
2017/05/25 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python程序变成软件的实操方法
2019/06/24 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
Nike瑞士官网:Nike CH
2021/01/18 全球购物
新三好学生主要事迹
2014/01/23 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
弄虚作假心得体会
2014/09/10 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
基层工作经验证明样本
2014/11/16 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
公司禁烟通知
2015/04/23 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
行政处罚事先告知书
2015/07/01 职场文书
五一晚会主持词
2015/07/01 职场文书