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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
PHP命令行与定时任务
Apr 01 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
php生成shtml类用法实例
2014/12/09 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
python数据结构之列表和元组的详解
2017/09/23 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
Servlet方面面试题
2016/09/28 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
python中mongodb包操作数据库
2022/04/19 Python