使用PHP简单制作一个图片上传功能的页面
- 2022年11月19日
- 956 次
在我们日常的建站过程中,文件或者是图片上传在前端页面和后端编辑器中都是一项十分基础又必备的功能之一,所以文件或者图片上传功能对于一个网站来说还是很重要的,本文则将记载使用PHP简单制作一个图片上传功能的页面。
一、PHP图片上传将使用到哪些函数?
使用PHP制作图片上传功能的效果需要的PHP函数有以下几个PHP函数:
1、PHP文件上传预定义变量$_FILES
2、判断文件是否是通过HTTP POST上传的is_uploaded_file()函数
(1)、is_uploaded_file()函数语法格式:
is_uploaded_file(string $filename): bool
(2)、is_uploaded_file()函数参数说明:
filename是需要检查的文件名;
is_uploaded_file()函数的返回值是布尔数据类型,如果是以HTTP POST上传的就返回TRUE,反之则是FALSE;
为了能使 is_uploaded_file() 函数正常工作,必须指定类似于$_FILES['userfile']['tmp_name']的变量,意思就是is_uploaded_file()函数内必须传入类似于$_FILES['userfile']['tmp_name']的变量
3、将上传的文件移动到新位置的函数move_uploaded_file()
(1)、move_uploaded_file()函数语法格式:
move_uploaded_file(string $filename, string $destination): bool
(2)、move_uploaded_file()函数参数说明:
filename:上传的文件的文件名;
destination:移动文件到这个位置;
成功时返回true。
二、PHP图片上传页面制作的思路
1、做好前端页面Form表单中的相关设置。
(1)、设置Form表单中的enctype的属性值为multipart/form-data,设置method的提交方式为post。
(2)、设置input的type类型为file,并写好input的name属性。
2、首先使用is_uploaded_file函数判断是否是上传文件。
3、使用预定义变量$_FILES获取前端页面提交的图片的相关信息。
4、判断前端上传的图片类型
5、把前端页面上传的图片移动到指定的目录下
6、判断前端页面上传的不同错误提示输出不同的内容
大致就是这样的一个思路,逻辑顺序上可能还是有一点问题,以下是根据以上相关的函数和相关思路,制作出的一个上传图片的Demo。
三、PHP简单实现图片上传功能实例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP简单实现图片上传功能实例代码</title>
<style>
*{margin:0;padding: 0;box-sizing: border-box;}
body{font-family: Arial, Helvetica, sans-serif;font-size: 16px;background-color: #f8f8f8;color: #666;}
.header{height: 80px;margin-bottom: 20px;background-color:#9c3;color:#fff;text-align: center;}
.container{width: 1024px;margin:0 auto;}
.content{width: 300px;height: 200px;margin: 0 auto;border: 1px solid #333;}
.content .form{display: flex;flex-flow: column;height:100%;padding:30px;align-content:space-between;justify-content: space-around;text-align: center;}
.content .form p,.content .form input ,.content .form button{height: 32px;max-width: 100%;}
</style>
</head>
<body>
<header class="header">
网站头部区域
</header>
<main class="contaier">
<div class="content">
<form class="form" action="" enctype="multipart/form-data" method="post">
<p><strong>文件上传</strong></p>
<input type="file" name="upload">
<button type="submit">上传</button>
</form>
</div>
</main>
</body>
</html>
<?php
if(is_uploaded_file($_FILES['upload']['tmp_name'])){
$name = $_FILES['upload']['name'];
$type = $_FILES['upload']['type'];
$tmp_name = $_FILES['upload']['tmp_name'];
$error = $_FILES['upload']['error'];
$size = $_FILES['upload']['size'];
//判断上传文件的图片类型
switch($type){
case 'image/jpeg':$ok_type=TRUE;
break;
case 'image/png':$ok_type=TRUE;
break;
case 'image/webp':$ok_type=TRUE;
break;
case 'image/gif':$ok_type=TRUE;
break;
}
if($ok_type){
//把文件上传到指定的目录下
move_uploaded_file($tmp_name,'up/'.$name);
$new_dir = 'up/'.$name;
echo '<hr>';
if($error==0){
echo '<strong>恭喜你上传成功了!以下是你的上传的具体信息:</strong><br>';
echo '你上传的图片文件名是:'.$name.'<br>';
echo '你上传的图片的图片类型是:'.$type.'<br>';
echo '你上传的图片在本地计算机中临时存放的缓存文件名:'.$tmp_name.'<br>';
echo '你上传的图片系统的返回值是:'.$error.'<br>';
echo '你上传的图片的文件大小是:'.$size.'字节<br>';
echo '图片预览效果:<br>';
echo "<img src=".$new_dir." title=".$name.">";
}elseif($error==1){
echo '你上传的文件超出了预定值';
}elseif($error==2){
echo '你的上传文件超出了表单的预定最大值';
}elseif($error==3){
echo '你的文件只被部分上传';
}elseif($error==4){
echo '你没有上传任何文件';
}elseif($error==6){
echo '抱歉,在php.ini文件中没有指定临时目录';
}elseif($error==7){
echo '抱歉!文件写入磁盘失败!';
}else{
echo '文件上传大小为0';
}
}else{
echo '请上传jpg、png、gif、webp等符合要求的图片!';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP简单实现图片上传功能实例代码</title>
<style>
*{margin:0;padding: 0;box-sizing: border-box;}
body{font-family: Arial, Helvetica, sans-serif;font-size: 16px;background-color: #f8f8f8;color: #666;}
.header{height: 80px;margin-bottom: 20px;background-color:#9c3;color:#fff;text-align: center;}
.container{width: 1024px;margin:0 auto;}
.content{width: 300px;height: 200px;margin: 0 auto;border: 1px solid #333;}
.content .form{display: flex;flex-flow: column;height:100%;padding:30px;align-content:space-between;justify-content: space-around;text-align: center;}
.content .form p,.content .form input ,.content .form button{height: 32px;max-width: 100%;}
</style>
</head>
<body>
<header class="header">
网站头部区域
</header>
<main class="contaier">
<div class="content">
<form class="form" action="" enctype="multipart/form-data" method="post">
<p><strong>文件上传</strong></p>
<input type="file" name="upload">
<button type="submit">上传</button>
</form>
</div>
</main>
</body>
</html>
<?php
if(is_uploaded_file($_FILES['upload']['tmp_name'])){
$name = $_FILES['upload']['name'];
$type = $_FILES['upload']['type'];
$tmp_name = $_FILES['upload']['tmp_name'];
$error = $_FILES['upload']['error'];
$size = $_FILES['upload']['size'];
//判断上传文件的图片类型
switch($type){
case 'image/jpeg':$ok_type=TRUE;
break;
case 'image/png':$ok_type=TRUE;
break;
case 'image/webp':$ok_type=TRUE;
break;
case 'image/gif':$ok_type=TRUE;
break;
}
if($ok_type){
//把文件上传到指定的目录下
move_uploaded_file($tmp_name,'up/'.$name);
$new_dir = 'up/'.$name;
echo '<hr>';
if($error==0){
echo '<strong>恭喜你上传成功了!以下是你的上传的具体信息:</strong><br>';
echo '你上传的图片文件名是:'.$name.'<br>';
echo '你上传的图片的图片类型是:'.$type.'<br>';
echo '你上传的图片在本地计算机中临时存放的缓存文件名:'.$tmp_name.'<br>';
echo '你上传的图片系统的返回值是:'.$error.'<br>';
echo '你上传的图片的文件大小是:'.$size.'字节<br>';
echo '图片预览效果:<br>';
echo "<img src=".$new_dir." title=".$name.">";
}elseif($error==1){
echo '你上传的文件超出了预定值';
}elseif($error==2){
echo '你的上传文件超出了表单的预定最大值';
}elseif($error==3){
echo '你的文件只被部分上传';
}elseif($error==4){
echo '你没有上传任何文件';
}elseif($error==6){
echo '抱歉,在php.ini文件中没有指定临时目录';
}elseif($error==7){
echo '抱歉!文件写入磁盘失败!';
}else{
echo '文件上传大小为0';
}
}else{
echo '请上传jpg、png、gif、webp等符合要求的图片!';
}
}
?>虽然磕磕盼盼的写出了这个简单的页面,但是总感觉逻辑上还是有一些小问题,在以后的学习中将继续优化这个实例代码。本文从PHP图片上传将使用到哪些函数、PHP图片上传页面制作的思路以及PHP简单实现图片上传功能实例代码三大方面记载了如何使用PHP简单制作一个图片上传功能的页面,希望本文能给也在学习PHP文件上传的网友带来帮助。
若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。
- PHP三元运算符和is…else的区别和不同之处 2022-06-20
- Z-index属性用法 Css中Z-index的作用 2022-10-13
- PHP如何实现图像剪裁合并?PHP实现图像剪裁合并的实例代码 2022-11-24
- PHP array_map() 函数详解:对数组元素统一处理 2026-07-02
- PHP构造方法使用学习笔记 PHP构造方法实例代码 2022-12-03
- PHP数组类型有哪些?PHP数组类型实例代码 2022-10-22
