今晚刚完成的 文件上传的类 推荐

klggg 2004-09-01 07:33:52
文件里有详细的说明。可以直接测试.
下载地址 :
http://202.101.43.198/ggg/wcg/attachment.php?=e6c6bbd585ecf4123298dc78fdf3556c&postid=126
源代码
<?
/**+-----------------------------------------------
** Copyright (c) 1998-1999 *********公司技术开发部
创建人: GGG
日 期: 2004-8-31 0:25
修改人: GGG
日 期: 2004-8-31 0:25
描 述: 实现文件上传的类
调 用:
备 注:
可以上传文件到网上指定目录,如果是图片只允许上传gif,jpg类型
程序要完成的几点:
如果上传的文件名和网上目录下的名称重复,对上传的文件进行改名,
这里采用文件名后加0-9的数字方法.
对于上传图片文件,
版 本:
1.0
**+-----------------------------------------------
*/


if(!defined("CLASS_GggFileUpload"))
{
define("CLASS_GggFileUpload","1");

class GggFileUpload
{
var $mIsDebug=true; //设置调试状态,在类中调试会有错,不要在类中调试false
var $mStrErr=""; //出错的文本信息,如果IsDebug为真,则在出错后自动中止程序执行,输出错误信息
var $mIsFileRight=false; //ture将保证上传后的文件名只能由字母,数字,上下划线,点号组成
var $mIsFileLower=true; //ture将把文件名采用小写,在由于win与unix系统对文件名大小字敏感不同,会在下载文件时出现很多麻烦
var $mMaxFileNameLen=30; //文件名允许的最大长度

var $ExtFilter=array('php' => 'php_'); //这里设置要过虑的扩展名,比如所用户上传的 .php 的文件改成 .php_ 程序采用替换的的方法 比如 .php3 的会变被换成 .php_3

var $mInputName; //<input type=file name=aaa> 所对应的aaa, *保存的是一个字符窜

var $mFileType; //文件上传的类型
var $mFileSize; //文件上传的大小
var $mFileName; //文件上传的名字
var $mFileTmpName; //文件上传后的临时名

var $mFileUpPath; //文件要上传服务器地址
var $mFileUpType; //文件上传所允许的类型
var $mFileUpSize; //文件上传所允许的最大字节
var $mFileUpName; //文件上传后所用的名字,也就是要更改成的名字
var $mErrorFile="failt"; //文件名不法时更改成在 mErrorFile 为开始的文件名

/**+-----------------------------------------------
函 数 名: GggFileUpload
功能描述: GggFileUpload初始化
函数说明: 类的构造函数 用于初始化类的成员变量
调用函数: GggFileUpload()
参数:
$inputName
<input type=file name=aaa> 所对应的aaa, 保存的是一个字符窜
$fileUpPath
文件要上传服务器地址
$fileUpType
文件上传所允许的类型
$fileUpSize
文件上传所允许的最大字节 默认为 150000 字节
返 回: 无
设 计 者: ggg 日期: 2004-9-1 1:17
修 改 者: ggg 日期: 2004-9-1 1:17
版 本: 1.0
**+-----------------------------------------------
*/
function GggFileUpload($inputName,$fileUpPath,$fileUpType="",$fileUpSize=150000)
{
$this->Set_File($inputName);
$this->Set_FileUpPath($fileUpPath);
$this->Set_FileUpSize($fileUpSize);
$this->Set_FileUpType($fileUpType);
}//END GggFileUpload
function Show_Debug()
{
if($this->mIsDebug && !empty($this->mStrErr))
printf("<br>Debug:<font color=#ff00ff> %s</font><br>\n", $this->mStrErr);
}
//********************** Set 区

//设置文件的属性
function Set_File($inputName)
{
if(!empty($inputName))
{
$this->mInputName=$inputName; //<input type=file name=aaa> 所对应的aaa, *保存的是一个字符窜
$this->mFileType=$_FILES[$inputName]["type"]; //文件上传的类型
$this->mFileSize=$_FILES[$inputName]["size"]; //文件上传的大小
$this->mFileName=$_FILES[$inputName]["name"]; //文件上传的名字
$this->mFileTmpName=$_FILES[$inputName]["tmp_name"]; //文件上传后的临时名
}
}

//设置文件文件名
function Set_FileName($filename)
{
if(!empty($filename))
$this->mFileName=trim($filename);
}

//设置文件要上传服务器地址
function Set_FileUpPath($fileUpPath)
{
if(!empty($fileUpPath))
$this->mFileUpPath=trim($fileUpPath);
}

//设置文件上传所允许的最大字节
function Set_FileUpSize($fileUpSize)
{
if(!empty($fileUpSize) && ereg("^[1-9][0-9]*$",$fileUpSize))
$this->mFileUpSize=$fileUpSize;
}

//设置文件上传所允许的类型
function Set_FileUpType($fileUpType)
{
if(!empty($fileUpType))
$this->mFileUpType=trim($fileUpType); //文件上传所允许的类型
}


//********************** Get 区

//得到文件名
function Get_FileName()
{
return $this->mFileName;
}

//得到文件的类型
function Get_FileType()
{
return $this->mFileType;
}

//得到文件的大小
function Get_FileSize()
{
return $this->mFileSize;
}

//文件上传后的临时名
function Get_FileTmpName()
{
return $this->mFileTmpName;
}

//得到文件要上传服务器地址
function Get_FileUpPath()
{
return $this->mFileUpPath;
}

//得到文件上传所允许的最大字节
function Get_FileUpSize()
{
return $this->mFileUpSize;
}

//得到文件上传所允许的类型
function Get_FileUpType()
{
return $this->mFileUpType;
}



//********************** Check 区

文件太长。请从上面的链接下载..
献丑了,多提宝贵意见.
...全文
244 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ustb 2004-09-01
不要用copy函数,用move_uploaded_file更好一些.
少了is_uploaded_file的检查.

  • 打赏
  • 举报
回复
klggg 2004-09-01
今天更新了下上传类,改了不少错误。
新的下载地址是:
http://218.108.4.134/bb/wwjh/ggg/down/fileupclass.php_
  • 打赏
  • 举报
回复
pwtitle 2004-09-01
Pear::http_upload多爽啊。
  • 打赏
  • 举报
回复
chinaworker 2004-09-01
也不支持多文件上傳
  • 打赏
  • 举报
回复
qndt 2004-09-01
吐血狂顶,如果打个包,几个功能页面也有就好了。
  • 打赏
  • 举报
回复
uuq 2004-09-01
应该把代码全部贴出来,以后能留在这里嘛
  • 打赏
  • 举报
回复
uuq 2004-09-01
好啊,强烈支持。这样php又多份力量了。
  • 打赏
  • 举报
回复
xuzuning 2004-09-01
不至于那么复杂吧?
应提供同名覆盖的选择
  • 打赏
  • 举报
回复
fhiesc 2004-09-01
我下载试用
  • 打赏
  • 举报
回复
whnnet 2004-09-01
支持,希望多写写好代码共享
  • 打赏
  • 举报
回复
klggg 2004-09-01
谢谢大家的介意。因为只做了一个晚上的,还没完善
to uuq(杜牧)
文件太长。请从上面的链接下载..
http://202.101.43.198/ggg/wcg/attachment.php?=e6c6bbd585ecf4123298dc78fdf3556c&postid=126

to xuzuning(唠叨)
程序采用比较全面的防错机制。也有 同名覆盖的功能 (文件里有说明),下面有例子

to chinaworker(网络混混)
多文件上传当然也可以实现呀,见下面

$t = new GggFileUpload("filename","../test/","text,image");
$t->UpLoad($keepName="ggg.txt",$originalFile="ggg.txt");//这里实现同名覆盖

$t->Set_File("filename1","../test/","text,image");//这里设置第二个文件上传参数
$t->UpLoad();//进行第二个文件的上传.


$t->Set_File("filename2");//这里设置第三个文件上传参数
$t->UpLoad();//进行第三个文件的上传.
....

to ustb(偶然) :谢谢你的介意.我会改正.

最后 把文件时里
//********************* 类测试

//!!!!!!!!!!!!!!!!!!!!! 类测试
之间的代码 注解去掉就可以直接运行这个类进行文件上传的测试了
  • 打赏
  • 举报
回复
相关推荐
发帖
基础编程
加入

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
申请成为版主
帖子事件
创建了帖子
2004-09-01 07:33
社区公告
暂无公告