上传类
时间:2008-07-25
来源:互联网
<?php
/**
功能:文件上传
作者:Eyes
创建时间:2005.7.14
最后修改时间:2005.7.14
使用方法:
一、单文件上传
假设文件域名为:up
$upfile = new upfile('/upfiles/','jpg,gif,png');
if ($upfile->upload($_FILES['up]))
echo '上传成功';
else
echo '上传失败,失败原因:'.$upfile->err;
二、多文件上传
假设文件域名为:up
$upfile = new upfile('/upfiles/','jpg,gif,png');
$tmp = $upfile->tranarr('up'); //这里要用到一个临时变量
foreach ($tmp as $v)
{
$upfile->upload($_FILES['up]);
}
**/
class upfile
{
//原文件名
var $oldname;
//保存文件名
var $savename;
//保存路径
var $savepath;
//上传文件最大值
var $maxsize = 2097152;
//是否覆盖同名文件
var $overwrite = 0;
//能上传文件格式
var $format;
//错误信息
var $err;
//构造函数
function upfile($savepath,$format)
{
$this->savepath = preg_match("/\/$/",$savepath)?$savepath:$savepath.'/';
$this->format = explode(',',strtolower($format));
}
//
function upload($array,$savename='')
{
$this->err = '';
$this->oldname = $array['name'];
$this->savename = ''==$savename?$this->makename():$savename;
//---- begin check ----//
if (1==$array['error'])
{
$this->err = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
return false;
}
elseif (2==$array['error'])
{
$this->err = '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
return false;
}
elseif (3==$array['error'])
{
$this->err = '文件只有部分被上传';
return false;
}
elseif (4==$array['error'])
{
$this->err = '没有文件被上传';
return false;
}
elseif ($array['size']>$this->maxsize)
{
$this->err = '上传文件大小超过允许的最大值';
return false;
}
elseif (!$this->isallowformat())
{
$this->err = '不允许上传的文件格式';
return false;
}
//---- end check ----//
//---- begin uplode ----//
$newfile = $this->savepath.$this->savename;
if (move_uploaded_file($array['tmp_name'],$newfile))
return $this->savename;
else
{
$this->err = '上传失败';
return 0;
}
//---- end uplode ----//
}//end uplode
//获取文件扩展名
function getext($filename='')
{
$filename = empty($filename)?$this->oldname:$filename;
$ar = explode('.',$filename);
return $ar[count($ar)-1];
}
//是否是允许的上传文件格式
function isallowformat($filename='')
{
$filename = empty($filename)?$this->oldname:$filename;
if (in_array(strtolower($this->getext($filename)),$this->format))
return 1;
else
{
//$this->err = '不允许的文件格式';
return 0;
}
}
//保存的文件名
function makename($filename='')
{
$filename = empty($filename)?$this->oldname:$filename;
$s = microtime();
$s = str_replace('.','',$s);
$s = str_replace(' ','',$s);
return $s.rand(10000,100000).'.'.$this->getext($filename);
}
//转换多文件上传时的数组
//$area 转换范围,如果不为ALL,那么只上传非空的文件表单中的文件,跳过空表单
function tranarr($form,$area='all')
{
$array = $_FILES[$form];
$c = count($array['name']);
for ($i=0; $i<$c; $i++)
{
$ar['name'] = $array['name'][$i];
$ar['type'] = $array['type'][$i];
$ar['tmp_name'] = $array['tmp_name'][$i];
$ar['error'] = $array['error'][$i];
$ar['size'] = $array['size'][$i];
if ('all'==$area)
$r[] = $ar;
else
{
if ($ar['error']!=4)
$r[] = $ar;
}
}
return $r;
}
}//end class
?>
作者: ggyuhai 发布时间: 2008-07-24
恩,学习一下
作者: EricHoo 发布时间: 2008-07-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28