首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>PHP专区>PHP教学>php实现的多文件上传类,并对常用文件的类型进行MIME检测
php实现的多文件上传类,并对常用文件的类型进行MIME检测
来源: 发布时间:2008-07-25 发布人: 浏览: 人次   字体: [ ]  

    业务需要写了个在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] 下一页
相 关 文 章   发布商链接
·WINXP系统是如何安装apache+php+mysq...
·PHP图片加水印的原理及其实现的代码
·用PHP操纵Oracle的LOB类型的数据
·使用php读取xml数据的示例
·PHP实现明天时间的计算
·PHP实现PDF正常输出中文的代码
·PHP中Zend Cache用法的小例子
·为什么PHP不适合于比小型业余网站更...
·fckeditor在php环境中的配置及其使用...
·实例介绍搭建PHP5和SQL Server 2005...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·PHP图片加水印的原理及其实现
·WINXP系统是如何安装apache+p...
·实例介绍搭建PHP5和SQL Serve...
·fckeditor在php环境中的配置...
·为什么PHP不适合于比小型业余
·PHP中Zend Cache用法的小例子
·PHP实现PDF正常输出中文的代...
·PHP实现明天时间的计算
·使用php读取xml数据的示例
·用PHP操纵Oracle的LOB类型的...
热 门 文 章
·fckeditor在php环境中的配置...
·WINXP系统是如何安装apache+p...
·PHP实现明天时间的计算
·为什么PHP不适合于比小型业余...
·PHP图片加水印的原理及其实现...
·实例介绍搭建PHP5和SQL Serve...
·使用php读取xml数据的示例
·PHP中Zend Cache用法的小例子
·PHP实现PDF正常输出中文的代...
·用PHP操纵Oracle的LOB类型的...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .