PHP 实现多文件上传

发布于:2021-05-14 10:37:33


multifileupload.html

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<form action="multifileupload.php" method="POST" enctype="multipart/form-data">

    <input type="file" name="image[]">

    <input type="file" name="image[]">

    <input type="file" name="image[]">

    <input type="submit" value="上传">

    </form>

</body>

</html>

multifileupload.php


<?php

header('content-type:text/html;charset=utf-8');

echo '<pre>';

//var_dump($_FILES);

//读取文件

$image=$_FILES['image'];

//包含上传函数

include_once 'fileUpload.php';

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

//循环上传

for ($i=0,$len=count($image['name']);$i<$len;$i++){

    $file=array(

      'name'=>$image['name'][$i],

    'type'=>$image['type'][$i],

        'tmp_name'=>$image['tmp_name'][$i],

        'error'=>$image['error'][$i],

        'size'=>$image['size'][$i]

    );

    //调用文件上传函数

    $res=fileUpload($file,'Upload/',$error,$type);

    if ($res){

        echo '文件上传成功,对应的文件名是:'.$res.'<br>';

    }

    else{

        echo $error;

    }



}

封装的文件上传函数:fileUpload.php


<?php

//文件上传函数封装

/*

 * @param1 array $file,要上传的文件信息,包含5个元素

 *@param2 string $path,存储位置

 * @param3 $string error,错误信息

 * @param4 array $type=array(),MIME类型限定

 * @param5 int $size=2000000,默认2M

 *  @return mixed, 成功返回文件名,失败返回false

 */

function fileUpload($file,$path,&$error,$type=array(),$size=2000000 ){

//判断本身文件是否有效

    if(!isset($file['error'])){

        $error='文件无效';

        return false;

    }

    //有效路径的判断

    if(!is_dir($path)){

        $error='存储路径无效';

        return false;

    }

    //判断文件本身上传是否成功

    switch ($file['error']){

        case 1:

        case 2:

            $error='文件超过服务器允许大小';

            return false;

        case 3:

            $error='文件只有部分上传';

            return false;

        case 4:

            $error='用户没有选择文件上传';

            return false;

        case 6:

        case 7:

        $error='服务器操作失败';

        return false;

    }

    //判断类型是否符合

    if (!empty($type) && !in_array($file['type'],$type)){

        $error='当前上传的文件类型不符合';

        return false;

    }

    //大小判断

    if ($file['size']>$size){

        $error='文件大小超过当前允许范围.当前允许大小是:'.string($size/1000000).'M';

        return false;

    }

    //转存,移动文件

    $newfilename=getNewName($file['name']);

if(@move_uploaded_file($file['tmp_name'],$path.''.$newfilename)){

    return $newfilename;

}

    else{

        $error='文件上传失败';

        return false; 

    }


}

//随机产生一个文件名

function getNewName($filename,$rand=6){

    $newname=date('YmdHis');//时间日期部分

    //随机部分

    $old=array_merge(range('a','z'),range('A','Z'));

    shuffle($old);

    for ($i=0;$i<$rand;$i++){

        $newname.=$old[$i];

    }

    return $newname.strstr($filename,'.');//组织有效文件名

}


上传成功:


上传失败就显示出其原因

————————————————


https://blog.csdn.net/qq_36192232/article/details/81142007

阅读 147+

一片空白

父爱如山,不善表达。回想十多年前,总记得父亲有个宽厚的肩膀,小小的自己跨坐在上面,越过人山人海去看更广阔的天空,那个时候期望自己有一双翅膀,能够像鸟儿一样飞得高,看得远。虽然父亲有时会和自己开玩笑,但在做错事的时候会受到严厉的训斥。父亲有双粗糙的大手掌。