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 daodb插入、更新与删除数据
Mar 19 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
laravel 判断查询数据库返回值的例子
Oct 11 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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/09/05 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
简单了解django文件下载方式
2020/02/10 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
通过实例解析python and和or使用方法
2020/11/14 Python
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
教师申诉制度
2014/01/29 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
统计员岗位职责范本
2015/04/14 职场文书
志愿服务心得体会
2016/01/15 职场文书
分家协议书范本
2016/03/22 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript