PHP上传图片,路径保存在数据库中,根据图片路径显示图片
时间:2019-06-13
本文章向大家介绍PHP上传图片,路径保存在数据库中,根据图片路径显示图片,主要包括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
原文地址:https://www.cnblogs.com/500m/p/11019352.html
- 部署Microsoft .NET Framework 3.0[翻译]
- 性能优化总结(六):预加载、聚合SQL应用实例
- 性能优化总结(五):CSLA服务端如何使用多线程的解决方案
- 编辑-发布-开发分离:git作为NoSQL数据库
- 性能优化总结(四):预加载的设计
- 在Expression Blend中使用XAML建立3D应用程序
- 使用 Asp.net Future May 2007 开发Silverlight应用
- Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成
- RePractise前端篇: 前端演进史
- 性能优化总结(三):聚合SQL在GIX4中的应用
- ASP.NET AJAX 控件开发基础
- 听我说说我的博客: 月访问量过万的个人IT博客的技术史
- TransactionScope和Enterprise Libray 3.0 Data Access Application Block
- 《Python Web开发 - 测试驱动方法》阅后感
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- HDFS之SequenceFile和MapFile
- 配置ELK技术栈来分析apache tomcat日志
- LVS DR模式搭建,keepalived + lvs
- Ubuntu安装docker
- DockerFile简介与实例
- Elasticsearch2.3官方Dockerfile解析
- openstack架构解析
- Linux服务器基础网络配置
- 负载均衡集群介绍,LVS介绍,LVS的调度算法,LVS的NAT模式搭建
- 03 实战 Ansible-Playbook之初始化服务器
- Dubbo与Zookeeper,SpringMVC整合和使用
- Docker安全之用户资源隔离
- kubernetes(六) 基于kubeadm构建高可用k8s集群
- docker存储驱动知识归纳总结
- 未来已来——如何在VR游戏中实现3D语音