热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php支持多文件上传-PHP源码

ec(2);<?php***TTR上传类*2007-09-22*[urlwww.gx3.cn]www.Gx3.cn[url]*QQ:252319874**class TTRUpload extends Error{      &nbs


/**
*TTR上传类
*2007-09-22
*[url=http://www.gx3.cn/]http://www.Gx3.cn[/url]
*QQ:252319874
**/

class TTRUpload extends
Error
{
const
filesize=81200000
;
private
$uploadpath="uploadfile/"
;
private
$savepath=null
;
private
$uploadfilename=null;
//单个文件为文件名,批量文件为xxxx|xxxx格式,请注意
private $ext=array("jpg","gif","png"
);
private
$error=null
;
private
$file=null
;
private
$uploadtype=null
;
private
$filename=null
;

//构造函数,$type:ONE单个上传 ANY批量上传;
public function __construct($file,$type="ONE"
)
{
if(
$type!="ONE" && $type!="ANY"
)
{
echo
""
;
exit;
}
$this->uploadtype=$type
;
$this->file=$file
;
}

private function
createFileName
()
{
return
$this->filename="TTR_".time().$this->getRandomN(4
);
}

private function
getUploadPath
()
{
if(
substr($this->uploadpath,-1,1)!="/"
)
{
$this->savepath=$this->uploadpath."/".date("Ym"
);
}else{
$this->savepath=$this->uploadpath.date("Ym"
);
}
$this->savepath=$this->getFolder($this->savepath
);
return
true
;
}

private function
getFileExt($tempfilename
)
{
return
end(explode(".",$tempfilename
));
}

private function
getExt
()
{
if(
in_array(strtolower($this->getFileExt($tempfilename)),$this->ext
))
{
return
true
;
}else{
return
false
;
}
}

private function
getFolder($folder
)
{
if(!
is_dir($folder
))
{
mkdir($folder
);
}
return
$folder."/"
;
}


public function
upload
()
{
if(
$this->uploadtype=="ONE"
)
{


if(
$this->getExt($this->file["type"
]))
{

parent::errorExt
();

}else if(
$this->file["size"]>self::filesize
){

parent::errorFileSize
();

}else if(!
$this->getUploadPath
()){

parent::errorUploadPath
();

}else{
$filenametemp=$this->createFileName
();
$filename=$this->savepath.$filenametemp.".".$this->getFileExt($this->file["name"
]);
if(
move_uploaded_file($this->file["tmp_name"],$filename
))
{
$this->uploadfilename=$filenametemp
;
parent::okMoved
();


}else{
parent::errorMoveUpload
();
}
}
}else if(
$this->uploadtype=="ANY"
){

for(
$i=0;$i<count($this->file);$i
++)
{

if(
$this->getExt($this->file[$i]["type"
]))
{
parent::errorExt
();

}else if(
$this->file[$i]["size"]>self::filesize
){

parent::errorFileSize
();

}else if(!
$this->getUploadPath
()){

parent::errorUploadPath
();

}else{
$filenametemp=$this->createFileName
();
$filename=$this->savepath.$filenametemp.".".$this->getFileExt($this->file[$i]["name"
]);
if(
move_uploaded_file($this->file[$i]["tmp_name"],$filename
))
{
$str.=$filenametemp."|"
;

}else{
parent::errorMoveUpload
();
}

}

}
$this->uploadfilename=substr($str,0,strlen($str)-1
);
parent::okMoved
();
}
}

public function
getUploadFileName
()
{
return
$this->uploadfilename
;
}

public function
setUploadPath($path
)
{
$this->uploadpath=$path
;
}


private function
getRandomN($n
)
{
if (
$n <1 || $n>10) return ""
;

$ary_num= array(0,1,2,3,4,5,6,7,8,9
);
$return =""
;
for (
$i=0;$i<$n;$i
++)
{
$randn = rand(0,9-$i
);
$return .= $ary_num[$randn
];
$ary_num[$randn] = $ary_num[9-$i
];
}
return
$return
;
}



public function
__destruct
()
{
$this->uploadfilename=null
;
$this->uploadtype=null
;
$this->file=null
;
$this->savepath=null
;
}

}

class
Error
{
public static function
errorFileSize
()
{
echo
"超出最大上传限制"
;
}

public static function
errorExt
()
{
echo
"此类文件不允许上传"
;
}

public static function
errorUploadPath
()
{
echo
"上传路径不正确"
;
}

public static function
errorMoveUpload
()
{
echo
"上传失败"
;
}

public static function
okMoved
()
{
echo
"上传成功!"
;
}

public static function
okArrayMoved
()
{
echo
"上传成功!"
;
}
}


实例应用:


require_once("include/upload.class.php");
if(
$_POST["button"
])
{
//print_r($_FILES);
//多个上传
$upload = new TTRUpload(array($_FILES["file1"],$_FILES["file2"],$_FILES["file3"],$_FILES["file4"]),"ANY"
);

//单个上传
//$upload = new TTRUpload($_FILES["file1"]);
$upload->upload
();
echo
$upload->getUploadFileName
();
}
?>

























推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 前言对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是 ... [详细]
  • 表单提交前的最后验证:通常在表单提交前,我们必须确认用户是否都把必须填选的做了,如果没有,就不能被提交到服务器,这里我们用到表单的formname.submit()看演示,其实这个对于我们修炼道 ... [详细]
  • 但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能。下面是具体的做法:一:跳转到新页面,并且是在新窗口中打开时:复制代码代码如下:fu ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Itwasworkingcorrectly,butyesterdayitstartedgiving401.IhavetriedwithGooglecontactsAPI ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
  • Iwouldliketobeabletohaveasidebarthatcanbetoggledinandoutonabuttonpress.However ... [详细]
author-avatar
手机用户2502891985
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有