zoukankan      html  css  js  c++  java
  • PHP-mysql存储照片的两种方式

    PHP-mysql存储照片的两种方式

     

    方式一:把图片数据存储在数据库中(二进制)

    数据库代码:

    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 ;

    展现代码:

    <?php 
     // 连接数据库 
    $conn=@mysql_connect("localhost","root","root") or die(mysql_error()); 
     @mysql_select_db('test',$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:test.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="test.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="test.php?action=show&id='.$val['id'].'&t='.time().'" width="150"></p>'; 
     } 
     ?> 
     </body> 
     </html> 
     <?php 
     } 
     ?>
    

     结果截图:

    方式二:通过在数据库中存储图片的路径来实现图片的存储

    (1)将图片上传到服务器

    (2)取出图片的路径存放到数据库中

    (3)使用时取出数据库的路径

    具体实现有兴趣的可以去完成,没有什么技术难点,欢迎大家交流!

     

    方法优劣:

    多服务器的时候应该使用第一种方法较好,单服务器第二种效率高一点

  • 相关阅读:
    标签的讲解
    属性分类
    LeetCode 003. 无重复字符的最长子串 双指针
    Leetcode 136. 只出现一次的数字 异或性质
    Leetcode 231. 2的幂 数学
    LeetCode 21. 合并两个有序链表
    象棋博弈资源
    acwing 343. 排序 topsort floyd 传播闭包
    Leetcode 945 使数组唯一的最小增量 贪心
    Leetcode 785 判断二分图 BFS 二分染色
  • 原文地址:https://www.cnblogs.com/qiujun/p/6830312.html
Copyright © 2011-2022 走看看