资讯专栏INFORMATION COLUMN

PHP上传图片的路径保存在数据库中,根据图片路径显示图片

geekidentity / 3300人阅读

摘要:鉴于上一篇上传图片到数据库并可以进行显示链接描述有笔友提出了改进意见,下面这篇文章就是采纳改进意见进行修改的另外一种方案。结语本人刚接触不久,自知能力不够水平有限,该文中若存在什么不足或需改进之处还请大家多多指正。

鉴于上一篇《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



 
  
  图片上传和下载
 
 

文件上传

上传图片:

3、实现图片上传的代码存放

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("不是一个上传文件!");
  }
?>

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

query($query);
    if($result){
        $result = $result->fetchAll(2);
         echo "";
         // $path="./uploads/";//定义一个上传后的目录
         // echo "";
    }
    else{
        echo "Handle errors";
    }
?>

5、运行结果
(1)图片上传成功后在数据库中的存储如下

运行getimage.php文件最终显示上传的图片如下

最后打开images文件还可以看到上传的图片均已保存在该文件夹中。

结语:本人刚接触PHP不久,自知能力不够水平有限,该文中若存在什么不足或需改进之处还请大家多多指正。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29094.html

相关文章

  • Ueditor 1.4.3.3 PHP图片上传路径修改

    摘要:前言在使用编辑器时,一般我们都是需要修改默认的图片上传路径的,下面是我整理好的修改位置和方法供大家参考。如果想修改上传路径,那么通过修改文件第行就可以做到。 前言 在使用UEditor编辑器时,一般我们都是需要修改默认的图片上传路径的,下面是我整理好的修改位置和方法供大家参考。 操作 Ueditor PHP版本本身自带了一套上传程序,我们可以在此基础中,找到配置文件修改它。配置文件位置...

    KitorinZero 评论0 收藏0
  • vue用element来实现上传图片和修改图片功能

      项目要求上传图片的模块,这个简单,但是要在保存图片后需要编辑就不怎么好处理了,现在就和大家一起分享。  一、应用场景  1.上传图片并进行放大预览  2.图片上传代码  就是直接将图片上传到接口,成功后返回图片路径,表单提交时,后台要路径拼成的字符串格式,类似str=‘/uploads/20220418/d93905dbcd041a0a88abc72fd34b6c98.jpg,/uploads...

    3403771864 评论0 收藏0
  • PHP微信公众号开发——群发消息(完结)

    摘要:关于上传图文消息素材和新增永久图文素材的区别上传图文消息素材等于是直接把图文素材传到微信的服务器,每次凭借获取素材,并且不占用素材库新增永久图文素材在开发者和微信服务器之间,多了一个素材库。 **说明1.文章和有道笔记几乎内容相同,所以如果有人在有道上有幸看到一样的文章,应该也是我写的,除非是全部复制2.内容会较长,故会拆分多篇文章讲解3.目前基本的群发已记录完结,如果后续有补充,会作...

    bbbbbb 评论0 收藏0
  • WEB之常见工作问题总结(1-20)

    摘要:第三种,使用格式,即在中请求参数处理跨域问题当然请求方式只能是。最后发现有网友说版本不稳定引起的,于是把百度地图回退到了,结果还真是可以了。请问在移动端页面中播放优酷里面的视频,怎样实现 1.web扫码登录怎么实现,思路 步骤 WEB平台 手机 第1步 生成二维码 第2步 (ajax监控后台) 扫码 第3步 ...

    genedna 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<