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 $_SERVER详解
Jan 16 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python判断Abundant Number的方法
2015/06/15 Python
python函数局部变量用法实例分析
2015/08/04 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
详解django中Template语言
2020/02/22 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
2014年工会工作总结
2014/11/12 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
庆六一开幕词
2015/01/29 职场文书
行政处罚听证告知书
2015/07/01 职场文书
暑假生活随笔
2015/08/15 职场文书
创业计划书之烤红薯
2019/09/26 职场文书