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 采集程序中常用的函数
Dec 09 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 03 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
jquery radio 操作代码
2011/03/16 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
javascript数据类型详解
2017/02/07 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
python装饰器使用实例详解
2019/12/14 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
实习会计求职自荐信范文
2014/03/10 职场文书
国培计划培训感言
2014/03/11 职场文书
交通文明倡议书
2014/05/16 职场文书
工作证明格式及范本
2014/09/12 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
python语言中pandas字符串分割str.split()函数
2022/08/05 Python