一:文件上传需要注意的是form表单一定要有enctype="multipart/form-date";属性;input标签中的type属性一定是file;
表单验证是当前页面:
$_FILES是一个超全局变量可以直接调用:数组内容如下:
1,$_FILES['myFile']['name']:客户端问价的原名称:本文相当于$_FILES['upload']['name'];
2,$_FILES['myFile']['type']:文件的MIME类型,需要浏览器提供该信息的支持,例如:image/gif;
3,$_FILES['myFile']['size']:已上传的文件的大小,单位为字节;
4,$_FILES['myFile']['tmp_name']:文件被上传后在服务器端储存的临时文件名,一般四系统默认可以在php.ini的 upload_tmp_dir指定,但是putenv()函数设置是不起作用的;
6,$_FILES['myFile']['error']:和该文件上传相关的错误代码:['error']是在php4.2.0版本中增加的,
UPLOAD_ERR_OK=0;没有发生错误,文件上传成功:
UPLOAD_ERR_INI_SIZE=1;上传文件超过了php.ini中upload_max_filesize选项限制的值
UPLOAD_ERR_FORM_SIZE=2;上传文件的大小超过了html表单中MAX_FILE_SIZE选项的值
UPLOAD_ERR_PARTIAL=3;文件只有部分被上传;
UPLOAD_ERR_NO_FILE=4;没有文件被上传,值为5 上传文件大小为零;

<?php
header('Content-Type:text/html;charset=utf-8');
/*php.inc*1,file_uploads=true;允许上传文件:
*2,max_input_time=30;允许脚本最长运行时间
*3,post_max_size=8M;允许脚本最长运行时间
*4,upload_max_filesize=2M;
允许上传的文件大小
*5,upload_time_dir=c:;文件的临时目录,mac/linux不用设置*//*上传文件的所有信息都会保存到超全局变量
*/
//1,检测是否提交了表单
if($_SERVER['REQUEST_METHOD']=='POST'){
//2,检测是否上传了文件
if($_FILES['upload']){
//3,设置允许上传的文件类型 放在数组$allowed中
$allowed=['image/jpeg','image/png','image/JPG','image/X-PNG','image/PNG','image/x-png'];
//4,检测用户上传的文件类型是不是在允许的类型列表中
if(in_array($_FILES['upload']['type'],$allowed)){
//5,创建一个临时目录
$temFile=$_FILES['upload']['tmp_name'];
//6,将文件从临时目录转移到目标目录
if(move_uploaded_file($temFile,__DIR__ .'/../php/img/'.$_FILES['upload']['name'])){
echo '<script>alert("文件上传成功")</script>';
}else{
echo '<script>alert("文件上传失败")</script>';
}
}else{
echo '<script style="color:red">上传的文件类型不允许</script>';
}
}
if($_FILES['upload']['error']>0){
switch($_FILES['upload']['error']){
case 1:
echo '<h2 style="color:red">文件上传大小超过了PHP.INI中规定的大小</h2>';
break;
case 2:
echo '<h2 style="color:red">文件大小超过了form表单中规定的大小</h2>';
break;
case 3:
echo '<h4 style="color:red">文件仅上传不完整</h4>';
break;
case 4:
echo '<h4 style="color:red">没有问件被上传</h4>';
break;
case 6:
echo '<h4 style="color:red">没有创建文件的临时文件夹</h4>';
break;
case 7:
echo '<h4 style="color:red">无法写入磁盘</h4>';
break;
case 8:
echo '<h4 style="color:red">文件上传被终止</h4>';
break;
default:
echo '<h4 style="color:red">意外错误请检查后重新上传</h4>';
break;
}
//删除临时文件 :此项可选
if(file_exists($temFile) && is_file($temFile)){
unlink($temFile);
}
}
}
?>
<!DOCTYPE html>
</html>
<head>
<title>文件上传</title>
<link rel="stylesheet" href="../dist/css/bootstrap.css">
<script src=" https://code.jquery.com/jquery-3.2.1.min.js">
</script><script src="../dist/js/bootstrap.js"></script>
<style>
*{ padding:0; margin:0;}
.box{ height:400px; width:400px; background-color:#eee; margin-top:100px; padding:0; position:relative; }
.box-top{ width:400px; height:50px; line-height:55px; background:skyblue; margin-left:0px; text-align:center; font-weight:bold; }
</style>
</head>
</body>
<div class="container">
<div class="row ">
<div class="col-md-4 box col-md-push-4">
<form action="" method="post" enctype="multipart/form-data">
<div class="row box-top">
<h4>文件上传</h4></div>
<!--1,form标签必须设置enctype=multipart/form-data,允许多种类型数据2,input 标签的type属性必须是file类型-->
<div class="row" style="margin-top:20px; text-align:center;">
<div class="col-md-10 col-md-push-1">
<input type="file" name="upload" >
<p style="margin-top:200px">
<input style="width:300px;" class="btn btn-primary" type="submit" value="上传文件">
</p>
</div>
</div>
</div>
</div>
</div>
</body>
</form>
</html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号