首页 > 后端开发 > php教程 > php 普通表单多文件上传的例子

php 普通表单多文件上传的例子

WBOY
发布: 2016-07-25 09:00:56
原创
1075 人浏览过
为大家提供一个php 普通表单多文件上传的例子,有需要的朋友,可以参考下。

php处理上传很方便,上传信息保存在$_FILES数组中,然后借助php相关函数进行处理即可。 当然,如果你基础已经打的不错,可以看看php文件上传的更多实现方法: php 多文件上传的简单例子(入门) php 多图片上传的简单例子(图文) php上传多个文件的代码 php多文件上传的三种方法

来看代码吧。

<?php
/*
* class: 文件上传类
* www: bbs.it-home.org
* date: 2013.1.20
* wwwRoot 网站根目录
*/

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 (!empty($name)) {
$this->up_name = $name;
!empty($ext) && $this->up_ext = $ext;
$this->up_rename = $rename;
$this->up_dir = wwwRoot.
$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'],
'name' => $_FILES[$this->up_name]['name'],
'type' => $_FILES[$this->up_name]['type'],
'size' => $_FILES[$this->up_name]['size'],
'error' => $_FILES[$this->up_name]['error']
);
$this->up_num = 1;
} else {
exit('没找找到需要upload的文件!');
}
}

$this->ChkUpload();
}

private function ChkUpload() {
if (empty($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 的文件!');
}
}
}

$this->Uploading();
}

private function Uploading() {
if (IO::DIRCreate($this->up_dir)) {
if (chmod($this->up_dir, 0777)) {
if (!empty($this->up_files)) {
foreach ($this->up_files as $up_file) {
if (is_uploaded_file($up_file['tmp_name'])) {
$file_name = $up_file['name'];
if ($this->up_rename) {
$file_ext = end(explode('.', $file_name));
$file_rnd = substr(md5(uniqid()), mt_rand(0, 26), 6);
$file_name = date('ymdHis').'_'.$file_rnd.'.'.$file_ext;
}
$file_name = $this->up_dir.'/'.$file_name;

if (move_uploaded_file($up_file['tmp_name'], $file_name)) {
$this->up_ret[] = str_replace(wwwRoot, '', $file_name);
} else {
exit('文件上传失败!');
}
}
}
}
} else {
exit('未开启写入权限!');
}
} else {
exit('上传目录创建失败!');
}
}

public function GetUpload() {
return empty($this->up_ret) ? false : $this->up_ret;
}

function __destruct() {}
}
?>
登录后复制


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板