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


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配置心得包含MYSQL5乱码解决
Nov 20 PHP
PHP面向对象编程快速入门
Dec 14 PHP
php目录管理函数小结
Sep 10 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
php双层循环(九九乘法表)
Oct 23 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 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 上传文件的方法(类)
2009/07/30 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
文字幻灯片
2006/06/26 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
angular.element方法汇总
2015/01/07 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
Python 26进制计算实现方法
2015/05/28 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python递归实现快速排序
2018/08/18 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python之时间和日期使用小结
2019/02/14 Python
Python模块相关知识点小结
2020/03/09 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
有兼职工作经历的简历自我评价
2014/03/07 职场文书
安全生产年活动总结
2014/08/29 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
医院感染管理制度
2015/08/05 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python