PHP多文件上传理解概括
发布时间:2022-07-18 14:16:19 所属栏目:PHP教程 来源:互联网
导读:上传文件HTML的输入标签FILE类型中的名称后要加[],作用是在HTML中向PHP建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例代码如下: form action=upload.php method=post enctype=multipart/form-data p input type=file name=pictures[] /br /
上传文件HTML的输入标签FILE类型中的名称后要加[],作用是在HTML中向PHP建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例代码如下: <form action=”upload.php” method=”post” enctype=”multipart/form-data”> <p> <input type=”file” name=”pictures[]” /><br /> </p> </form> 手册中实例,选择文件后点击上传,代码如下: <?php print_r($_FILES); ?> 查看源文件,代码如下: Array ( [pictures] => Array ( [name] => Array ( [0] => file1.txt [1] => file2.txt [2] => file3.txt ) ) [size] => Array ( [0] => 94289 [1] => 65536 [2] => 102400 ) ) ) 假设名为 /file1.txt和 /file2.txt 的文件被提交,则 $_FILES['pictures']['name'][0] 的值将是 file1.txt,而 $_FILES['pictures']['name'][1] 的值将是 file2.txt。类似的,$_FILES['file2.txt']['size'][0] 将包含文件 file1.txt 的大小,有了上面信息了我们要实现多文件上传就简单了,代码如下: <?php class upload { public $up_ext=array(), $up_max=5210, $up_dir; private $up_name, $up_rename=true, $up_num=0, $up_files=array(), $up_ret=array(); function __construct($name, $ext=array(), $rename=true) { if (!emptyempty($name)) { $this->up_name = $name; !emptyempty($ext) && $this->up_ext = $ext; $this->up_rename = $rename; $this->up_dir = website_dirroot. $globals['cfg_upload_path']; $this->initupload(); } else { exit('upload文件域名称为空,初始化失败!'); } } private function initupload() { if (is_array($_files[$this->up_name])) { $up_arr = count($_files[$this->up_name]); $up_all = count($_files[$this->up_name], 1); $up_cnt = ($up_all - $up_arr) / $up_arr; for ($i = 0; $i < $up_cnt; $i ++) { if ($_files[$this->up_name]['error'][$i] != 4) { $this->up_files[] = array( 'tmp_name' => $_files[$this->up_name]['tmp_name'][$i], 'name' => $_files[$this->up_name]['name'][$i], 'type' => $_files[$this->up_name]['type'][$i], 'size' => $_files[$this->up_name]['size'][$i], 'error' => $_files[$this->up_name]['error'][$i] ); } } $this->up_num = count($this->up_files); } else { if (isset($_files[$this->up_name])) { $this->up_files = array( 'tmp_name' => $_files[$this->up_name]['tmp_name'], $this->chkupload(); } private function chkupload() { if (emptyempty($this->up_ext)) { $up_mime = array('image/wbmp', 'image/bmp', 'image/gif', 'image/pjpeg', 'image/x-png'); foreach ($this->up_files as $up_file) { $up_allw = false; foreach ($up_mime as $mime) { if ($up_file['type'] == $mime) { $up_allw = true; break; } } !$up_allw && exit('不允许上传'.$up_file['type'].'格式的文件!'); if ($up_file['size'] / 1024 > $this->up_max) { exit('不允许上传大于 '.$this->up_max.'k 的文件!'); } } } else { foreach ($this->up_files as $up_file) { $up_ext = end(explode('.', $up_file['name'])); $up_allw = false; foreach ($this->up_ext as $ext) { if ($up_ext == $ext) { $up_allw = true; break; } } !$up_allw && exit('不允许上传.'.$up_ext.'格式的文件!'); if ($up_file['size'] / 1024 > $this->up_max) { exit('不允许上传大于 '.$this->up_max.'k 的文件!'); } } (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |