当前位置:网站首页>PHP encapsulates a file upload class (supports single file and multiple file uploads)

PHP encapsulates a file upload class (supports single file and multiple file uploads)

2022-06-24 09:56:00 BigChen_ up


class Upload {
    
    // Add an intelligent action :  It can automatically determine whether the current file is a multi file or a single file ,  To automatically select the correct method for processing 
    public static function save($dir) {
    
        if (!file_exists($dir)) {
    
            // a/b/c  The intermediate directory does not exist , Automatically created !
            mkdir($dir, 0777, true);
        }

        // Determine whether the current file is multiple   still   Single file upload 
        // An array of single file uploads   yes   Two dimensional array ,  The multi file upload array is a three-dimensional array 
        // practice :  Judge whether it is a three-dimensional array 

        //reset() Used to read the first value in the array 
        $tmp = reset($_FILES);
        $tmp = reset($tmp);

        if (is_array($tmp)) {
    
            // yes 3 dimension 
            return self::saveMultiple($dir);
        } else {
    
            return self::saveSingle($dir);
        }
    }

    // Multiple file upload 
    protected static function saveMultiple($dir) {
    
        //1. Transformation format 
        foreach ($_FILES as $key => $value) {
    
            foreach ($value as $kk => $vv) {
    
                foreach ($vv as $k => $v) {
    
                    $newArr[$k][$kk] = $v;
                }
            }
        }

        //2. Cycle save 
        $names = [];

        foreach ($newArr as $key => $value) {
    
            $filename = $value['tmp_name'];

            // Random name :  The nuptial   and   The code problem 
            $uniqueName = md5(microtime(true) . mt_rand(1e9, 9e9));
            // Suffix name :
            $ext = pathinfo($value['name'], PATHINFO_EXTENSION);
            // Splice names : ***.jpg
            $fn   = "$uniqueName.$ext";
            $dest = "files/$fn";

            $suc = move_uploaded_file($filename, $dest);
            // Saved successfully :  Save the file name to the array 
            if ($suc === true) {
    
                // Index array new elements 
                $names[] = $fn;
            }
        }
        return $names;
    }

    // Single file upload operation 
    protected static function saveSingle($dir) {
    
        foreach ($_FILES as $key => $value) {
    
            $filename = $value['tmp_name'];

            // Random name :  The nuptial   and   The code problem 
            $uniqueName = md5(microtime(true) . mt_rand(1e9, 9e9));
            // Suffix name :
            $ext = pathinfo($value['name'], PATHINFO_EXTENSION);
            // Splice names : ***.jpg
            $fn   = "$uniqueName.$ext";
            $dest = "$dir/$fn";

            $suc = move_uploaded_file($filename, $dest);
            // Failure ,  Then return to false
            if ($suc === false) {
    
                return false;
            }
        }
        // If there is no failure ,  The saved file name is returned 
        return $fn;
    }
}
原网站

版权声明
本文为[BigChen_ up]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206240807401297.html