PHP上传文件代码练习2 (重复文章)

表单:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>无标题</title>
</head>
<body>
  <form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="2097152">
  <input type="file" name="filename[]" multiple="multiple" accept="image/jpeg"><br/><br/>
  <input type="submit" value="上传">
  </form>
</body>
</html>

函数部分:

<?php
//判断是单文件还是多文件并且组合数组

function getFiles(){

    $i=0;
    foreach ($_FILES as $file) {
        
        if (is_array($file['name'])) {
            foreach ($file['name'] as $key => $value) {
                $files[$i]['name']=$file['name'][$key];
                $files[$i]['type']=$file['type'][$key];
                $files[$i]['tmp_name']=$file['tmp_name'][$key];
                $files[$i]['size']=$file['size'][$key];
                $files[$i]['error']=$file['error'][$key];
                $i++;
            }
            
        }elseif (is_string($file['name'])) {
            $files[$i]=$file;
            $i++;
            # code...
        }    
        
        
    }
    return $files;
}

//上传文件函数

function uploadFiles($files){

    $res=array();
    //判断错误号
    if($files['error']===UPLOAD_ERR_OK){

        //判断文件大小
        $maxsize=2097152;
        if($files['size']>$maxsize){
            $res['msg']=$files['name'].' 文件过大';
        }
        

        //判断文件格式是否符合要求
        $ext=strtolower(pathinfo($files['name'],PATHINFO_EXTENSION));
        $extarray=['jpeg','jpg'];
        if(!in_array($ext, $extarray)){
            $res['msg']=$files['name'].' 格式不符合要求';
            # code...
        }
        

        //判断是否是真正的图片
        $flag=true;
        if($flag){
            if(@!getimagesize($files['tmp_name'])){
                $res['msg']=$files['name'].'不是真正的图片文件';
            }
            
        }
        

        //判断是否是通过HTTP POST上传;
        if(!is_uploaded_file($files['tmp_name'])){
            $res['msg']=$files['name'].'不是通过HTTPPoSt上传';
        }
        if($res) return $res;

        //移动文件
        $path='uploads';
        if(!file_exists($path)){
            mkdir($path,0777,true);
            chmod($path,0777);
        }
        //唯一的文件名
        $newname=md5(uniqid(microtime(true),true));
        $destination=$path.'/'.$newname.'.'.$ext;
        if(!move_uploaded_file($files['tmp_name'], $destination)){
            $res['msg']=$files['name'].'文件移动失败';
        }
        $res['msg']=$files['name'].'上传成功';
        $res['dest']=$destination;
        return $res;

    }else{
        switch ($files['error']) {
        case 1:
            $res['msg']=$files['name'].'文件超过了最大限制';
            break;
        case 2:
            $res['msg']=$files['name'].'文件的大小超过了表单限制';
            # code...
            break;
        case 3:
            $res['msg']=$files['name'].'只有部分被上传';
            # code...
            break;
        case 4:
            $res['msg']='没有选择文件';
            # code...
            break;
        case 6:
            $res['msg']='找不到临时文件';
            # code...
            break;
        case 7:
            $res['msg']='系统错误';
            # code...
            break;

            
        }
        return $res;
    }
}

操作部分:

<?php
include('uploads_func.php');

$files=getFiles();

foreach ($files as  $value) {
    $res=uploadFiles($value);
    echo $res['msg']."<br><br>";
    # code...
}

 

posted @ 2015-02-09 22:18  选择了就坚持  阅读(297)  评论(0编辑  收藏  举报