PHP文件上传验证

F0rg3t's Blog:

<?php

var_dump($_FILES);

//开始判断错误号

$error = $_FILES['upload']['error'];

var_dump($error);

switch($error){

case 1:

exit('上传的文件超过了限制');

break;

case 2:

exit('上传的文件超过了表单提交的最大值');

break;

case 3:

exit('文件只有部分被上传');

break;

case 4:

exit('没有文件被上传');

break;

case 6:

exit('找不到临时文件夹');

case 7:

exit('文件写入失败');

break;

}

//判断文件大小

$filesize = $_FILES['upload']['size'];//获得上传的文件大小

$maxfilesize = 200000;//设置上传的最大值

if($filesize > $maxfilesize){

exit('上传的文件过大');

}

//判断是否是允许的类型,白名单方式

$allowtype = array('jpeg','jpg','bmp','png','gif');//定义允许上传的文件名

$filetype = pathinfo($_FILES["upload"]["name"]);

//var_dump ($filetype);

$file1 = $filetype['extension'];//获得上传文件的后缀名

//echo $file1;

if(!in_array($file1,$allowtype)){

exit('你传的什么玩意');

}

//判断mime类型是否合法,白名单方式

$allowmime = array('image/png','image/jpeg','image/jpg','image/gif');

//定义合法的mime

$filemime = $_FILES['upload']['type'];

//echo $filemime;

if(!in_array($filemime,$allowmime)){

exit('你上传的文件mime不合法');

}

//获得临时的文件名

$tmp_name = $_FILES['upload']['tmp_name'];

//echo $tmp_name;

//对上传来的文件进行随机重命名操作,命名方式为当前的时间加上1到9999之间的随机数再md5加密

$newname = md5(date('Ymdhis').rand(1,9999)).'.'.$file1;

//echo $newname;

//判断文件是否通过http post上传来的

if(is_uploaded_file($_FILES['upload']['tmp_name'])){

//移动临时文件到指定目录,完成上传

move_uploaded_file($_FILES['upload']['tmp_name'],'D:\wamp\www\96\1117\pic/'.$newname);

}

?>

评论
热度(2)
  1. 千秋雪F0rg3t's Blog 转载了此文字
 

© 千秋雪 | Powered by LOFTER