zoukankan      html  css  js  c++  java
  • PHP上传图片,路径保存在数据库中,根据图片路径显示图片

    1、创建数据表

     
    CREATE TABLE image(
    id int(4) unsigned NOT NULL AUTO_INCREMENT,
    name varchar(100) default NULL,
    path varchar(100) default NULL,
    time timestamp    default CURRENT_TIMESTAMP,
    PRIMARY KEY(id)
    )engine=myisam DEFAULT charset=utf8



    2、新建一个uploads文件夹
    uploads文件夹下面新建一个images文件夹(用来存放上传后的图片的文件夹)
    ,创建index.php(用于点击选择文件后提交的页面),upimage.php(实现图片上传的代码存放),getimage.php(实现图片显示的代码存放)

    3、用于点击选择文件后提交页面的index.php

     
    <!doctype html>
    <html>
     <head>
      <meta charset="UTF-8">
      <title>图片上传和下载</title>
     </head>
     <body>
    <center>
    <h2>文件上传</h2>
    <!-- 文件上传得form表单 -->
    <form action="upimage.php" method="post" enctype="multipart/form-data">
    上传图片:
    <input type="file" name="pic">
    <input type="submit" value="上传">
    </form>
    </center>
     </body>
    </html>

    4、实现图片上传的代码存放   upimage.php

     
    <?php
        //1.获取上传文件信息
        $upfile=$_FILES["pic"];
        //定义允许的类型
        $typelist=array("image/jpeg","image/jpg","image/png","image/gif");
        $path="./images/";//定义一个上传后的目录
        //2.过滤上传文件的错误号
        if($upfile["error"]>0){
            switch($upfile['error']){//获取错误信息
                case 1:
                    $info="上传得文件超过了 php.ini中upload_max_filesize 选项中的最大值.";
                    break;
                case 2:
                    $info="上传文件大小超过了html中MAX_FILE_SIZE 选项中的最大值.";
                    break;
                case 3:
                    $info="文件只有部分被上传";
                    break;
                case 4:
                    $info="没有文件被上传.";
                    break;
                case 5:
                    $info="找不到临时文件夹.";
                    break;
                case 6:
                    $info="文件写入失败!";break;
            }die("上传文件错误,原因:".$info);
        }
        //3.本次上传文件大小的过滤(自己选择)
        if($upfile['size']>100000){
            die("上传文件大小超出限制");
        }
        //4.类型过滤
        if(!in_array($upfile["type"],$typelist)){
            die("上传文件类型非法!".$upfile["type"]);
        }
        //5.上传后的文件名定义(随机获取一个文件名)
        $fileinfo=pathinfo($upfile["name"]);//解析上传文件名字
        do{ 
            $newfile=date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];
        }while(file_exists($path.$newfile));
        //6.执行文件上传
        //判断是否是一个上传的文件
        if(is_uploaded_file($upfile["tmp_name"])){
                //执行文件上传(移动上传文件)
                if(move_uploaded_file($upfile["tmp_name"],$path.$newfile)){
                    echo "文件上传成功!";
    
                    //将文件名和路径存储到数据库
                    $dbms = 'mysql'; //数据库类型
                    $host = 'localhost';  //数据库主机名
                    $dbName = 'smart_lock';  // 使用的数据库
                    $user = 'root';  //数据库连接用户名
                    $pass = '123456'; //对应的密码
                    $dsn ="mysql:host = $host;dbname=$dbName";
                    $pdo = new PDO($dsn,$user,$pass);
                    $data = addslashes(fread(fopen($pic,"r"),filesize($pic)));
                    //将图片的名称和路径存入数据库
                    $query = "INSERT INTO image(name,path)VALUES('$newfile','$path$newfile')";
                    $result = $pdo -> query($query);
    
                    if($result){
                        echo"文件已存储到数据库";
                    }
                    else{
                        echo"请求失败,请重试";
                    }
                }else{
                die("上传文件失败!");
            }
        }else{
        die("不是一个上传文件!");
      }
    ?>

    5、实现图片显示的getimage.php

     
    <?php
        //$id = isset($_GET['id'])?intval($_GET['id']):1;
        //$id = $_GET['id'];
        $id = 2;    //id正常应该是通过用户填入的id获取(客户端发送过来的查询数据id)
        $dbms = 'mysql'; //数据库类型
        $host = 'localhost';  //数据库主机名
        $dbName = 'smart_lock';  // 使用的数据库
        $user = 'root';  //数据库连接用户名
        $pass = '123456'; //对应的密码
    
        $dsn = "mysql:host = $host;dbname=$dbName";
        $pdo = new PDO($dsn,$user,$pass);
        $query = "select name,path from image where id=$id";
        
        //数据查询
        $result = $pdo->query($query);
        if($result){
            $result = $result->fetchAll(2);
             echo "<img src=".$result[0]['path'].">";
             // $path="./uploads/";//定义一个上传后的目录
             // echo "<img src=$path".$result[0]['name'].">";
        }
        else{
            echo "Handle errors";
        }
    ?>
     
    转载自:https://segmentfault.com/a/1190000015750653
  • 相关阅读:
    100以内质数的算法
    WebAPI和WebService的区别
    .net core 2.0 数据访问-迁移
    .net core 2.0 Redis的基本使用
    .net core 2.0 Autofac
    net core 2.0 + Autofac的坑
    MVC路由机制
    MVC原理
    CentOS安装GIt、上传项目到git仓库
    ARM 汇编指令集 特点5:ARM 多级指令流水线
  • 原文地址:https://www.cnblogs.com/500m/p/11019352.html
Copyright © 2011-2022 走看看