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

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程序设计有所帮助。

(0)

相关推荐

  • 解决PHP上传非标准格式的图片pjpeg失败的方法

    前一阵子网站新上了相册功能,可最近总发现有一些用户上传的图片文件链接失效,代码检查了很多次,测试也做的比较充分了,但还是会出现上传失败的问题,很是郁闷,今天终于找到了解决办法. 从备份源中找到了用户上传失败的JPG图片,进行上传测试,上传完成后页面提示: Warning: imagecreatefromjpeg(): '/tmp/lalala' is not a valid JPEG file in /path/upload.php on line 1 出现这个Warning是由于GD函数库检测

  • php上传图片到指定位置路径保存到数据库的具体实现

    1.conn.php 复制代码 代码如下: <? $host="localhost"; //数据库服务器名称 $user="root"; //用户名 $pwd="1721"; //密码 $conn=mysql_connect($host,$user,$pwd); mysql_query("SET character_set_connection=gb2312, character_set_results=gb2312, chara

  • PHP中CheckBox多选框上传失败的代码写法

    用惯Java和其他语言的时候,表单上传只需要checkbox的name相同的时候就可以上传了 <input type="checkbox" name="checkbox" value="1"> 选项 <input type="checkbox" name="checkbox" value="2"> 选项 <input type="checkbox&

  • 简单PHP上传图片、删除图片实现代码

    上传图片: 复制代码 代码如下: if (!empty($_FILES["img"]["name"])) { //提取文件域内容名称,并判断 $path="uppic/"; //上传路径 if(!file_exists($path)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir("$path", 0700); }//END IF //允许上传的文件格式 $tp = array("image

  • PHP CKEditor 上传图片实现代码

    我花了一个下午的时间,自己用PHP脚本写了一个处理上传文件的脚本代码,没有做更多的安全处理,希望对大家有用. 首先,在你的config.js文件里添加如下代码: 复制代码 代码如下: CKEDITOR.editorConfig = function( config ) { config.filebrowserImageUploadUrl = './upload.php?type=img'; config.filebrowserFlashUploadUrl = './upload.php?type

  • php上传大文件失败的原因及应对策略

    为什么上传大文件总是失败,但是上传小文件就没有问题.小编也不得其解,网上搜其原因,整理了一篇关于php上传大文件失败的原因和解决办法的文章,分享给大家. 下面分别是各种原因以及解决办法: 第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定则 PHP 使用系统默认值. php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限. 第2种情况:max_

  • php ajax无刷新上传图片实例代码

    AJAX 客户端页面代码: index.html 复制代码 代码如下: <html> <body> <h1>Ajax file upload sample</h1><br/><input id="uplaod" name="btn_send" type="button" value="上传测试"/> <div id=result></di

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

    php实现上传图片保存到数据库的方法.分享给大家供大家参考.具体分析如下: php 上传图片,一般都使用move_uploaded_file方法保存在服务器上.但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外) 如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间. 首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库. mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据

  • thinkPHP3.0框架实现模板保存到数据库的方法

    本文实例讲述了thinkPHP3.0框架实现模板保存到数据库的方法.分享给大家供大家参考,具体如下: 在开发cms的时候用到如果将模板文件存入到数据库并显示到页面中 由于thinkphp3.0都是直接从模板文件中读取再解析的那么对于模板存入数据库中就只有自己开发了,还有thinkphp3.0中有mode的功能我们可以定义自己的mode这样就可以达到目的了,那么如何来扩展自己的mode呢?如下: 1.在你的入口文件中输入 define('MODE_NAME','Ey'); 其中"Ey"就

  • Python 获取 datax 执行结果保存到数据库的方法

    执行 datax 作业,创建执行文件,在 crontab 中每天1点(下面有关系)执行: 其中 job_start 及 job_finish 这两行记录是自己添加的,为了方便识别出哪张表. #!/bin/bash source /etc/profile user1="root" pass1="pwd" user2="root" pass2="pwd" job_path="/opt/datax/job/" j

  • Java用jxl读取excel并保存到数据库的方法

    项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单. 基本的思路: 把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数据存到list中,通过遍历list,得到map,存到数据库中. 首先导入jar包:在网上都有, 代码: 页面: 新模excel导入 <input type="file" name="excel" id="xinmu"> <input

  • asp.net上传图片保存到数据库的代码

    数据库:保存图片的数据格式 图象二进制数据储存字段前台: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadWork.aspx.cs" Inherits="meishuguan.UploadWork" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr

  • ssm框架上传图片保存到本地和数据库示例

    本文介绍了ssm框架上传图片保存到本地和数据库示例,主要使用了Spring+SpringMVC+MyBatis框架,实现了ssm框架上传图片的实例,具体如下: 1.前台部分 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head&g

  • php查询mysql数据库并将结果保存到数组的方法

    本文实例讲述了php查询mysql数据库并将结果保存到数组的方法.分享给大家供大家参考.具体分析如下: 这里主要用到了mysql_fetch_assoc函数 mysql_fetch_assoc语法如下: array mysql_fetch_assoc (resource $Result_Set) 范例代码如下: <?php $UserName = 'abc'; $Password = '1234'; $DbHandle = mysql_connect ('localhost', $UserNam

  • 解决JSP保存到数据库丢失格式的方法

    网站上的文章用什么存储?使用Oralce用CLOB存储,Java操作CLOB的方法网上很多,可是发现读取后显示在网页上和录入时的格式完全不同,该有的段落已经不复存在. 由于页面中使用的是textarea标签而不是强大的网页文本编辑器,所以要自己处理格式的问题了,下面是我找到的一个专业函数, 使用它将前台传过来的文章字符串转义一下再存入数据库,这次再读取出来的文章就有段落的显示了. JSP保存到数据库丢失格式的解决方法代码引用: /** * 格式化文章信息,保持文章的格式.保存时用. * * @p

  • Django 接收Post请求数据,并保存到数据库的实现方法

    要说基本操作,大家基本都会,但是有时候,有些操作使用小技巧会节省很多时间. 本篇描述的就是使用dict小技巧,保存到数据库,用来节省大家编码的工作量. 主要内容:通过for循环拿到post表单中的值并保存到一个dict中,然后通过**dict保存到数据库中. 1.用户提交了一个表单,表单内容包含csrf. 2.服务端除了表单中的csrf要过滤掉,其它的都要保存到数据库中. 3.具体看下方代码: 下面的代码分别为修改和保存,其中修改是根据ID修改的. 要注意, 1.保存前的resourcesOld

  • jsp实现textarea中的文字保存换行空格存到数据库的方法

    UploadNews.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dt

随机推荐