21,893
社区成员




<?php
//生成唯一的标示
function getuniname(){
return md5(uniqid(microtime(true),true));
}
//得到文件拓展名并打乱文件名
function getext($filename){
//构建上传文件信息
function buildinfo(){
$i=0;
foreach ($_FILES as $v){
if(is_string($v['name'])){
$files[$i]=$v;
$i++;
//多文件
}else{
foreach($v['name'] as $key=>$val){
$files[$i]['name']=$val;
$files[$i]['size']=$v['size'][$key];
$files[$i]['tmp_name']=$v['tmp_name'][$key];
$files[$i]['error']=$v['error'][$key];
$files[$i]['type']=$v['type'][$key];
$i++;
}
}
}
return $files;
}
function uploadfile($fileinfo,$allowext=array("gif","jpeg","jpg","png"),$maxsize=2097152,$imgflag=true){
if(!file_exists($fileinfo)){
mkdir($fileinfo,0777,true);
}
$file=buildinfo();
foreach($file as $filee){
if($filee['error']===UPLOAD_ERR_OK){
$ext=getext($filee['name']);
//检查文件的扩展名
if(!in_array($ext,$allowext)){
exit("非法文件类型");
}
//检验是否为真正的图片类型
if($imgflag){
if(!getimagesize($filee['tmp_name'])){
exit("不是真正图片类型");
}
}
//上传文件的大小
if($filee['size']>$maxsize){
exit("上传文件过大");
}
//检验是否为http post上传
if(!is_uploaded_file($filee['tmp_name'])){
exit("不是通过http post方式上传");
}
$filename=getuniname().".".$ext;
$destination="C:/xampp/htdocs/gtrading/img/user_photo/".$filename;
if(move_uploaded_file($filee['tmp_name'],$destination)){
$filee['name']=$filename;
unset($filee['error'],$filee['tmp_name']);
$uploadedfiles[$i]=$filee;
$i++;
}
}else{
switch($filee['error']){
case 1:
echo "<script type='text/javascript'>alert('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');history.back();</script>";
break;
case 2:
echo "<script type='text/javascript'>alert('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值');history.back();</script>";
break;
case 3:
echo "<script type='text/javascript'>alert('文件只有部分被上传');history.back();</script>";
break;
case 4:
echo "<script type='text/javascript'>alert('没有文件被上传');history.back();</script>";
break;
}
}
return $uploadedfiles;
}
}
}
$fileinfo=uploadfile();
print_r($uploadfile);