关于PHP文件上传的基础操作
<?php
//创建一个一个函数
function upload(){
//判断这个文件是否有文件域
//$_FILES是一个超全局变量 empty()判断变量是否为空,或者不存在,如果是的 返回true;
//isset()判断变量是否定义,并且不为null 返回的是false;
if(empty($_FILES['img'])){
//定义超全局变量 让用户在界面能够看到错误提示
$GLOBALS['message']='暂不支持文件上传!';
//终止函数进行
return;
}
//为了后续操作方便。将$_FILE['img'] 赋值给一个变量
$file=$_FILES['img'];
/**array(5) {
["name"]=>
string(22) "财务报告分析.doc"
["type"]=>
string(18) "application/msword"
["tmp_name"]=>
string(27) "C:\Windows\temp\phpC2A4.tmp"
["error"]=>
int(0)
["size"]=>
int(289280)
}
*/
//判断提交的文件名知否存在
if (empty($file['name'])) {
//定义超全局变量
$GLOBALS['message']='请选择文件后上传';
return;
}
//判断文件error 是否为UPLOD_ERROR_OK;如果是的。就表明上传成功;
if ($file['error']!='UPLOAD_ERROR_OK') {
//定义超全局变量
$GLOBALS['message']='文件上传失败';
return;
}
//文件已经上传成功。 现在要将文件移动到
//设置移动的文件夹
//string(27) "C:\Windows\temp\phpC2A4.tmp"
//目标位置是,跟以上格式一致;
$target='./test/'.$file['name'];
//临时文件
$temp=$file['tmp_name'];
$moved=move_uploaded_file($temp,$target);
//文件移动成功后会有一个返回值;boolean 类型
//做出判断。 看文件是否成功移动到指定的文件中;
if(!$moved){
$GLOBALS['message']='文件上传失败';
return;
}
$GLOBALS['message']='文件上传成功';
}
//判断文件请求方式,是post 就继续进行
if($_SERVER['REQUEST_METHOD']==='POST'){
//调用一个函数
upload();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>更换头像</title>
<style type="text/css">
body{
background-color: #47ADFB;
}
.box{
width: 400px;
height: 400px;
border:1px solid #ccc;
box-shadow: 2px 2px 2px 2px rgba(0,0,0,0.3);
margin:100px auto;
background: #fff;
}
#img{
display: none;
}
label{
line-height: 100px;
text-align: center;
display: block;
list-style: none;
width: 100px;
height: 100px;
border:1px solid #ccc;
margin: 30px 50px;
background:url(touxiang.png) no-repeat;
}
</style>
</head>
<body>
<div class="box">
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<input type="file" name="img" id="img">
<label for="img">更换头像</label>
<button>提交</button>
<!-- 判断message是否存在或者为空 -->
<?php if (isset($message)): ?>
<p style="color: hotpink"><?php echo $message; ?></p>
<?php endif ?>
</form>
</div>
</body>
</html>
注意几个点: empty()和isset()的区别和用法;
empty()检查一个变量是否为空或者不存在;如果变量为空或者不存在,返回的 是true;
isset()检查变量是否 设置,并且不是null ,返回的是false;