php实现上传图片保存到数据库的方法


Posted in PHP onFebruary 11, 2015

php实现上传图片保存到数据库的方法。分享给大家供大家参考。具体分析如下:

php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)
如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。

首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。
mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。

BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。

TinyBlob       最大 255B
Blob              最大 65K
MediumBlob  最大 16M
LongBlob      最大 4G

数据表photo,用于保存图片数据,结构如下:

CREATE TABLE `photo` (  

  `id` int(10) unsigned NOT NULL auto_increment,  

  `type` varchar(100) NOT NULL,  

  `binarydata` mediumblob NOT NULL,  

  PRIMARY KEY  (`id`)  

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

upload_image_todb.php:

<?php  

// 连接数据库  

$conn=@mysql_connect("localhost","root","")  or die(mysql_error());  

@mysql_select_db('demo',$conn) or die(mysql_error()); 
// 判断action  

$action = isset($_REQUEST['action'])? $_REQUEST['action'] : ''; 
// 上传图片  

if($action=='add'){  

    $image = mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name']));  

    $type = $_FILES['photo']['type'];  

    $sqlstr = "insert into photo(type,binarydata) values('".$type."','".$image."')";  

    @mysql_query($sqlstr) or die(mysql_error());  

    header('location:upload_image_todb.php');  

    exit();  

// 显示图片  

}elseif($action=='show'){  

    $id = isset($_GET['id'])? intval($_GET['id']) : 0;  

    $sqlstr = "select * from photo where id=$id";  

    $query = mysql_query($sqlstr) or die(mysql_error());  

    $thread = mysql_fetch_assoc($query);  

    if($thread){  

        header('content-type:'.$thread['type']);  

        echo $thread['binarydata'];  

        exit();  

    }  

}else{  

// 显示图片列表及上传表单  

?>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  

<html>  

 <head>  

  <meta http-equiv="content-type" content="text/html; charset=utf-8">  

  <title> upload image to db demo </title>  

 </head>  

  

 <body>  

  <form name="form1" method="post" action="upload_image_todb.php" enctype="multipart/form-data">  

  <p>图片:<input type="file" name="photo"></p>  

  <p><input type="hidden" name="action" value="add"><input type="submit" name="b1" value="提交"></p>  

  </form>  

  

<?php  

    $sqlstr = "select * from photo order by id desc";  

    $query = mysql_query($sqlstr) or die(mysql_error());  

    $result = array();  

    while($thread=mysql_fetch_assoc($query)){  

        $result[] = $thread;  

    }  

    foreach($result as $val){  

        echo '<p><img src="upload_image_todb.php?action=show&id='.$val['id'].'&t='.time().'" width="150"></p>';  

    }  

?>  

</body>  

</html>  

<?php  

}  

?>

php实现上传图片保存到数据库的方法

php实现上传图片保存到数据库的方法

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
php实现购物车功能(下)
Jan 05 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
Sep 16 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
php使用curl获取https请求的方法
Feb 11 #PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 #PHP
php判断并删除空目录及空子目录的方法
Feb 11 #PHP
php获取YouTube视频信息的方法
Feb 11 #PHP
php实现图片局部打马赛克的方法
Feb 11 #PHP
php实现获取文件mime类型的方法
Feb 11 #PHP
php强制更新图片缓存的方法
Feb 11 #PHP
You might like
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
PHP实现货币换算的方法
2014/11/29 PHP
PHP 无限级分类
2017/05/04 PHP
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
大门门卫岗位职责
2013/11/30 职场文书
大学生创业感言
2014/01/25 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
促销活动计划书
2014/05/02 职场文书
本科生自荐信
2014/06/18 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL