文件上传表单:
// upload.html
<form action="file.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
接收文件
// file.php
<?php
header("Content-type: text/html; charset=utf-8");
var_dump($_FILES);
if($_FILES['file']['error']>0){
switch ($_FILES['file']['error']) {
//错误码不为0,即文件上传过程中出现了错误
case '1':
echo '文件过大';
break;
case '2':
echo '文件超出指定大小';
break;
case '3':
echo '只有部分文件被上传';
break;
case '4':
echo '文件没有被上传';
break;
case '6':
echo '找不到指定文件夹';
break;
case '7':
echo '文件写入失败';
break;
default:
echo "上传出错<br/>";
}
}else{
//错误码为0,即上传成功,可以进行后续处理
//判断文件是否超出了指定的大小
//单位为byte
$MAX_FILE_SIZE = 100000;
if($_FILES['file']['size'] > $MAX_FILE_SIZE){
//判断,如果上传的文件,大小超出了我们给的限制范围,退上传并产生错误提示
exit("文件超出指定大小");
}else{
$allowSuffix = array('jpg','gif');
//定义允许的后缀名数组
$myImg = explode('.', $_FILES['file']['name']);
$myImgSuffix = array_pop($myImg);
/*
根据上传文件名获取文件的后缀名
使用in_array()函数,判断上传文件是否符合要求
当文件后缀名不在我们允许的范围内时退出上传并返回错误信
息
*/
if(!in_array($myImgSuffix, $allowSuffix)){
exit("文件后缀名不符");
}
/*
mime类型和文件后缀名的对应关系,
我们可以通过很多途径查询到,
为了避免用户自主修改文件后缀名造成文件无法使用。
mime类型也必须做出限制检查mime类型,
是为了防止上传者直接修改文件后缀名
导致文件不可用或上传的文件不符合要求。
*/
//数组内容为允许上传的mime类型
$allowMime = array(
"image/jpg",
"image/jpeg",
"image/pjpeg",
"image/gif"
);
if(!in_array($_FILES['file']['type'], $allowMime)){ //判断上传文件的mime类型是否在允许的范围内
exit('文件格式不正确,请检查');
//如果不在允许范围内,退出上传并返回错误信息
}
//第四步生成指定的的路径和文件名
$path = "upload/images/";
$name = date('Y').date('m').date("d").date('H').
date('i').date('s').rand(0,9).'.'.$myImgSuffix;
//第五步,判断是否是上传文件
if(is_uploaded_file($_FILES['file']['tmp_name'])){
//第六步,移动文件到指定位置
if(move_uploaded_file($_FILES['file']['tmp_name'],$path.$name)){
//提示文件上传成功
echo "上传成功";
}else{
/*
文件移动失败,检查磁盘是否有足够的空间,
或者linux类系统中文件夹是否有足够的操作权限
*/
echo '上传失败';
}
}else{
echo '不是上传文件';
}
}
}
?>
注意需保证服务器上存在此目录: $path = "upload/images/";