|
业务需要写了个在PHP5+UTF8开发环境下的文件上传类,可支持多文件上传,并对常用文件的类型进行MIME检测,当然还有些功能没有加上去,如自动更名,图片处理等.可根据需要自己添加,看下面的代码吧:
USE:
$up = new upfile(ROOT_PATH.'data/'.date("Ym",time()),array('gif','jpg','jpeg'),true); $fileimg = $up->upload($_FILES['img']);//返回上传后文件名数组,$_FILES['img']为上传的文件 可使用$up->log查看上传时信息.
<?php //==================================================== // FileName: upfile.class.php // Summary: 文件上传类 //==================================================== if(!defined('OK'))exit(__FILE__.'Access Denied'); class upfile { public $ExtensionFileFormat = array(); public $returninfo = array();
private $ImageFileFormat = array('gif','bmp','jpg','jpe','jpeg','png'); private $OtherFileFormat = array('zip','pdf','rar','xls','doc','ppt','csv'); private $savePath; private $attachment_path = './upfiles/'; private $overwrite = false; # 同名时是否覆盖 private $maxSize = 0; # 文件最大字节,为0时不限制大小 private $ext; private $errno = 0;
/* 构造函数 * (string)$savePath 文件保存路径,默认为$attachment_path * (array)$extensionFileFormat 自定义上传文件的扩展名,未设置时为$ImageFileFormat || $OtherFileFormat * (bool)$overwrite 是否覆盖同名文件 */ public function __construct($savePath='',$extensionFileFormat = array(),$overwrite = false) { $this->savePath = empty($savePath)?$this->attachment_pathsavePath.'/'; $this->extensionFileFormat = is_array($extensionFileFormat)?$extensionFileFormat:array(); $this->overwrite = is_bool($overwrite)?$overwrite:false; }
/*上传函数 * (array)$files 待上传的文件数组$_FILES['attach'] * (number)$maxSize 文件的最大字节数,默认为0不限制上传大小 */ public function upload($files,$maxSize=0) { $this->maxSize = is_numeric($maxSize)?$maxSize:0; if(isset($files) && is_array($files)) { if(is_array($files['name'])) { foreach($files as $key => $var) { foreach($var as $id => $val) { $attachments[$id][$key] = $val; } } } else { $attachments[] = $files; } } self::check_file_type($attachments); if(empty($this->filelist)) { $this->log .= "待上传的文件列表为空。\n"; return array(); } if(!self::makeDirectory() || !@is_writable($this->savePath)) { $this->log .= $this->savePath . "不能创建或其权限为不可写。\n"; return array(); } $filearray = array(); foreach($this->filelist as $k=>$f) { if($this->maxSize && $f['size']>$this->maxSize) { $this->log .= $f['name'] . "其大小超过了设定的值:" . $this->maxSize ."\n"; }elseif($this->overwrite == false && file_exists($this->savePath . $f['name'])) { $this->log .= $f['name'] . "已经存在于目录:" . $this->savePath . "\n"; }else{ @unlink($this->savePath . $f['name']); if(@move_uploaded_file($f['tmp_name'],$this->savePath . mb_convert_encoding($f['name'],'gbk','utf-8'))) {//如果不进行编码转换,中文将无法支持 $this->log .= $f['name'] . "成功上传到目录:". $this->savePath ."\n"; $filearray[$k] = $this->savePath . $f['name']; }else{ $this->log .= $f['name'] . "上传失败。\n"; } } } return $filearray; }
共2页: 上一页 1 [2] 下一页
|