本文将分享PHP封装的多文件上传类实例与用法详解的详细内容,并且还将对php多文件上传进行详尽解释,此外,我们还将为大家带来关于php常用的文件上传类-可多文件上传、PHP单文件上传的过程化函数封装p
本文将分享PHP封装的多文件上传类实例与用法详解的详细内容,并且还将对php 多文件上传进行详尽解释,此外,我们还将为大家带来关于php 常用的文件上传类-可多文件上传、PHP单文件上传的过程化函数封装 php多文件上传插件 php文件上传插件 php ftp上传文、php多文件上传类及用法实例详解、PHP多文件上传类实例的相关知识,希望对你有所帮助。
本文目录一览:- PHP封装的多文件上传类实例与用法详解(php 多文件上传)
- php 常用的文件上传类-可多文件上传
- PHP单文件上传的过程化函数封装 php多文件上传插件 php文件上传插件 php ftp上传文
- php多文件上传类及用法实例详解
- PHP多文件上传类实例
PHP封装的多文件上传类实例与用法详解(php 多文件上传)
本文实例讲述了PHP封装的多文件上传类实例与用法。分享给大家供大家参考,具体如下:
\n",$msg); } /**//** * 取文件扩展名 * @param String $filename 给定要取扩展名的文件 * @access private * @return String 返回给定文件扩展名 */ function getFileExt($filename) { $stuff = pathinfo($filename); return $stuff['extension']; } /**//** * 取给定文件文件名,不包括扩展名。 * eg: getBaseName("j:/hexuzhong.jpg"); //返回 hexuzhong * * @param String $filename 给定要取文件名的文件 * @access private * @return String 返回文件名 */ function getBaseName($filename,$type) { $basename = basename($filename,$type); return $basename; } } /**//******************** UploadFile类使用注释 //注意,上传组件name属性不管是一个还是多个都要使用数组形式,如: upload(); if ($num != 0) { echo "上传成功
"; //取得文件的有关信息,文件名、类型、大小、路径。用print_r()打印出来。 print_r($upload->getSaveInfo()); //格式为: Array // ( // [0] => Array( // [name] => example.txt // [type] => txt // [size] => 526 // [path] => j:/tmp/example-1108898806.txt // ) // ) echo $num."个文件上传成功"; } else { echo "上传失败
"; } } */ ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
php 常用的文件上传类-可多文件上传
class My_Lib_upfile{
var $upfile, $upfile_name, $upfile_size;
# $upfile 临时文件名 $_FILES[''tmp_name''] ,$upfile_name 文件名 $_FILES[''name''] ,$upfile_size 文件大小$_FILES[''size''];
var $new_upfile_name; # 上传后的文件名称 ;
var $fleth, $fileExtent; # 文件扩展名(类型) ;
var $f1, $f2, $f3; # 文件保存路径(多级) upfiles/2008-01/08/;
var $filename; # 文件(带路径) ;
var $filepath; #相对路径用来删除文件;
var $maxSize, $File_type; # 允许上传文件的大小 允许上传文件的类型 ;
var $BuildFile,$newFile,$File_width,$File_height,$rate;
function upfileclass($upfile,$upfile_name,$upfile_size){
$this->upfile = $upfile;
$this->upfile_name = $upfile_name;
$this->upfile_size = $upfile_size;
$this->new_upfile_name = $this->CreateNewFilename($this->upfile_name);
$this->f1 = "public/upload/images";
$this->f2 = $this->f1."/".date(''Y'')."-".date(''m'');
$this->f3 = $this->f2."/".date(''d'');
$this->filename = $this->f3 . "/" . $this->new_upfile_name;
$this->maxSize = 5000*1024; # 文件大小 5000KB
$this->File_type = "gif/jpg/jpeg/png/bmp"; # 允许上传的文件类型
}
# 创建新文件名 (原文件名)
function CreateNewFilename($file_name){
$this->fleth = explode(".",$file_name);
$this->fileExtent = $this->fleth[(int)count($this->fleth)-1]; # 获取文件后缀;
$tmps教程tr = date(''Ymd'').rand(0,time()) . "." .$this->fileExtent; # 创建新文件名;
return $tmpstr;
}
# 检测文件类型是否正确
function chk_fileExtent(){
$iwTrue = 0;
$fle = explode("/",$this->File_type);
for($i=0; $i
if($this->fileExtent == $fle[$i]){
$iwTrue = (int) $iwTrue + 1;
}
}
if( $iwTrue == 0 ){
$this->msg("文件不符合 ".$this->File_type." 格式!");
}
}
# 提示错误信息并终止操作
function msg($Error){
echo " ";
die();
}
# 保存文件
function savefile(){
$this->chk_fileExtent();
$this->chk_fileSize();
$this->CreateFolder( "./".$this->f1 );
$this->CreateFolder( "./".$this->f2 );
$this->CreateFolder( "./".$this->f3 );
return $this->chk_savefile();
}
# 检测上传结果是否成功
function chk_savefile(){
$copymsg = copy($this->upfile,"./".$this->filename);
if( $copymsg ){
return $this->filename;
}
else{
$this->msg("文件上传失败! 请重新上传! ");
}
}
# 创建文件夹
function CreateFolder($foldername){
if( !is_dir($foldername) ){
mkdir($foldername,0777);
}
}
# 检测文件大小
function chk_fileSize(){
if( $this->upfile_size > $this->maxSize ){
$this->msg("目标文件不能大于". $this->maxSize/1024 ." KB");
}
}
# 删除文件($filePath 文件相对路径)
function Deletefile($filePath){
if( !is_file($filePath) ){
return false;
}
else{
$ending = @unlink($filePath);
return $ending;
}
}
}
?>
PHP单文件上传的过程化函数封装 php多文件上传插件 php文件上传插件 php ftp上传文
php多文件上传类及用法实例详解
1、upfiles.css.php 文件
<?php class UploadFiles{ private $maxsize = '1000000'; //允许上传文件最大长度 private $allowtype = array('jpg','png','gif','jpeg');//允许上传文件类型 private $israndfile = true;//是否随机文件名 private $filepath;//上传路径 private $originName;//上传的源文件 private $tmpfileName;//临时文件名 private $newfileName;//新文件名 private $fileSize;//文件大小 private $fileType;//文件类型 private $errorNum = 0;//错误号 private $errorMessg = array();//错误消息 //对成员初始化 function construct($options = array()){ foreach($options as $key=>$val){ $key = strtolower($key); //查看传进来的数组里下标是否与成员属性相同 //print_r(array_keys(get_class_vars(get_class($this)))); if(!in_array($key,array_keys(get_class_vars(get_class($this))))){ continue; }else{ $this->setOption($key,$val); } } } private function setOption($key,$val){ $this->$key = $val; //echo $this->errorNum."<br>"; } //检查文件上传路径 private function checkfilePath(){ //echo $this->filepath; if(empty($this->filepath)){ $this->setOption('errorNum',"-5"); return false; } if(!file_exists($this->filepath) || !is_writable($this->filepath)){ if(!@mkdir($this->filepath,0755)){ $this->setOption('errorNum','-4'); return false; } } return true; } //获取错误信息 private function getError(){ $str = "上传文件{$this->originName}出错---"; switch($this->errorNum){ case 4; $str .= "没有文件被上传";break; case 3; $str .= "文件只被部分上传";break; case 2; $str .= "超过文件表单允许大小";break; case 1; $str .= "超过php.ini中允许大小";break; case -1; $str .= "未允许的类型";break; case -2; $str .= "文件过大,不能超过".$this->maxsize."个字节";break; case -3; $str .= "上传失败";break; case -4; $str .= "建立文件上传目录失败";break; case -5; $str .= "必须指定上传路径";break; default; $str .= "未知错误"; } return $str."<br>"; } //检查文件类型 private function checkfileType(){ //echo $this->fileType; if(!in_array(strtolower($this->fileType),$this->allowtype)){ $this->setOption('errorNum','-1'); return false; }else{ return true; } } //检查文件大小 private function checkfileSize(){ if($this->fileSize > $this->maxsize){ $this->setOption('errorNum','-2'); return false; }else{ return true; } } //处理随机文件名称 private function prorandFile(){ $ch = $this->israndfile; if($ch == 'true'){ return true; }else{ return false; } } // private function setFiles($name="",$tmp_name="",$size="",$error=""){ //检查上传路径 if(!$this->checkfilePath()){ //$this->errorMessg = $this->getError(); return false; } //echo $error."<br>"; if($error){ $this->setOption('errorNum',$error); return false; } $arrstr = explode('.',$name); $type = end($arrstr); $this->setOption('originName',$name); $this->setOption('fileSize',$size); $this->setOption('fileType',$type); $this->setOption('tmpfileName',$tmp_name); return true; } //检查是否有文件上传 function checkFile($formname){ if(!@$_FILES[$formname]){ $this->setOption('errorNum',4); return false; }else{ return true; } } //上传文件 function uploadeFile($formname){ if(!$this->checkFile($formname)){ $this->errorMessg = $this->getError(); return false; } $return = true; $name = @$_FILES[$formname]['name']; $tmp_name = @$_FILES[$formname]['tmp_name']; $size = @$_FILES[$formname]['size']; $error = @$_FILES[$formname]['error']; //$type = $_FILES[$formname]['type']; if(is_array($name)){ $errors = array(); for($i=0; $i<count($name); $i++){ if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){ if(!$this->checkfileSize() || !$this->checkfileType()){ $errors[] = $this->getError(); $return = false; } }else{ $errors[] = $this->getError(); $return = false; } if(!$return) $this->setFiles(); } if($return){ $newfileN = array(); for($i=0; $i<count($name); $i++){ if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){ if(!$this->copyFile()){ $errors[] = $this->getError(); $return = false; }else{ $newfileN[] = $this->newfileName; } } $this->newfileName = $newfileN; } } //print_r($errors); $this->errorMessg = $errors; //echo $errors; return $return; }else{ if($this->setFiles($name,$tmp_name,$size,$error)){ $return = true; if($error) var_dump($error); if($this->checkfileSize() && $this->checkfileType()){ }else{ $return = false; } }else{ $return = false; } if(!$return){ $this->errorMessg = $this->getError(); } return $return; } } //获取上传后的文件名 function getnewFile(){ return $this->newfileName; } //把文件拷贝到指定的路径 function copyFile(){ $filepath = rtrim($this->filepath,'/')."/"; if(!$this->errorNum){ if($this->prorandFile()){ $this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType; }else{ $this->newfileName = $this->originName; } if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){ $this->setOption('errorNum',-3); return false; }else{ return true; } }else{ return false; } } //上传错误后返回的消息 function gteerror(){ $err = $this->errorMessg; return $err; } } ?>
2、使用方法
uploade.php 文件:
<?php //print_r($_FILES['spic']); header('Content-Type:text/html;charset=utf-8'); //if(@$_FILES['spic'])echo "ddddddddd";; include('upFiles.css.php'); $upfile = new UploadFiles(array('filepath'=>'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000')); if($upfile ->uploadeFile('spic')){ $arrfile = $upfile ->getnewFile(); foreach($arrfile as $v){ echo $v,"<br/>"; } echo "上传成功!"; }else{ $err = $upfile ->gteerror(); if(is_array($err)){ foreach($err as $v1){ echo $v1,"<br/>"; } }else{ echo $err; } //var_dump($err); } //var_dump($upfile); ?>
HTML 文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> function Check(){ //alert('dddd'); for(i=1; i<9; i++){ if(document.getElementById('v'+i).value == ''){ document.getElementById('v'+i).name = 'uu'; } } } </script> </head> <body> <form name="upfile" action="uploade.php" method="post" enctype="multipart/form-data"> <input type="file" name="spic[]" id="v1" /><br/> <input type="file" name="spic[]" id="v2" /><br/> <input type="file" name="spic[]" id="v3" /><br/> <input type="file" name="spic[]" id="v4" /><br/> <input type="file" name="spic[]" id="v5" /><br/> <input type="file" name="spic[]" id="v6" /><br/> <input type="file" name="spic[]" id="v7" /><br/> <input type="file" name="spic[]" id="v8" /><br/> <input type="submit" name="sub" value="提交" onclick="return Check()" /> <input type="reset" name="res" value="重填" /> </form> </body> </html>
以上就是php多文件上传类及用法实例详解的详细内容,更多请关注php中文网其它相关文章!
PHP多文件上传类实例
《PHP实例:PHP多文件上传类实例》要点:
本文介绍了PHP实例:PHP多文件上传类实例,希望对您有用。如果有疑问,可以联系我们。
PHP实战本文实例讲述了PHP多文件上传类.分享给大家供大家参考.具体如下:
/*
PHP多文件上传类
修改:Linvo 2008-2-15
*/
class more_file_upload{
const FILE_PATH='../upfileclass/uploadfile/';
var $file_type;
var $file_type_array;
var $file_type_real_array;
var $file_type_string;
var $file_name;
var $file_size;
var $file_tmp_name;
var $file_error;
var $handledate;
var $totalsize=0;
function __construct($file_name,$file_error,$file_size,$file_tmp_name,$file_type){
$this->handledate=date('m-d-Y');
if (!empty($file_name)){
$this->$file_name = $file_name;
$this->$file_error = $file_error;
$this->$file_size = $file_size;
$this->$file_tmp_name = $file_tmp_name;
$this->$file_type = $file_type;
$this->$file_type_array = array('/','image/gif','image/jpg','image/jpeg','image/pjpeg','image/png');
$this->$file_type_real_array = array(0.1,'jpg'=>74707370,'gif'=>7173,'bmp'=>6677,'png'=>807871);
$this->show_execute_message($this->$file_error,$this->$file_name,$this->$file_type,$this->$file_size);
}
}
function __destruct(){
$this->$file_name = NULL;
$this->$file_error = NULL;
$this->$file_size = NULL;
$this->$file_tmp_name = NULL;
$this->$file_type = NULL;
$this->$totalsize = 0;
}
function show_execute_message($smfileerror,$smfilename,$smfiletype,$smfilesize){
if($smfileerror>0){
switch ($smfileerror){
case 1: $smfilemessage='<strong>文件超过服务器的约定大小!</strong>';break;
case 2: $smfilemessage ='<strong>文件超过指定的文件大小!</strong>';break;
case 3: $smfilemessage='<strong>文件只上传了部分!</strong>';break;
case 4: echo "$this->$file_name ".'文件上传失败!<br/>';break;
}
self::__destruct();
}else{
$smfiletypeflag = array_search($smfiletype,$this->$file_type_array);
//进行真实格式验证
if($smfiletypeflag != false){
$file = fopen($this->$file_tmp_name,"rb");
$bin = fread(file,10);
fclose($file);
$strInfo = @unpack("c10chars",$bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$smfiletypeflag = array_search($typeCode,$this->$file_type_real_array);
if($smfiletypeflag == false){ //判断是否是png图片
$typeCode = intval($strInfo['chars2'].$strInfo['chars3'].$strInfo['chars4']);
$smfiletypeflag = array_search($typeCode,$this->$file_type_real_array);
if($smfiletypeflag == false){ //判断是否是jpg图片
$$typeCode = intval($strInfo['chars7'].$strInfo['chars8'].$strInfo['chars9'].$strInfo['chars10']);
$smfiletypeflag = array_search($typeCode,$this->$file_type_real_array);
}
}
}
if($smfiletypeflag == false){
$smfilemessage='<strong>文件类型不对,请核实!</strong>';
self::__destruct();
}else{
$resflag = $$this->move_file($$this->$file_tmp_name,$this->$file_name);
if ($resflag == 1){
$smfilemessage = '文件上传成功!';
$this->totalsize += intval($smfilesize);
self::__destruct();
}else{
$smfilemessage = '<strong>文件上传失败!</strong>';
self::__destruct();
}
}
}
$$smfilesizeformat = $this->size_BKM($smfilesize);
echo '<tr>
<td align="left" >'.$smfilename.'</td>
<td align="center" >'.$smfiletype.'</td>
<td align="center" >'.$smfilesizeformat.'</td>
<td align="center" >'.smfilemessage.'</td>
</tr>';
}
function move_file($mvfiletmp,$mvfilename){ //移动文件
$mvfilenamearr = explode('.',basename($mvfilename));
$mvfilenamearr[0] = $this->rand_string();
$mvfilename = implode('.',$mvfilenamearr);
if (is_uploaded_file($mvfiletmp)){
$uploadfile = self::FILE_PATH."$mvfilename";
$result = move_uploaded_file($mvfiletmp,$uploadfile);
return $result;
}
}
function rand_string(){
$string = md5(uniqid(rand().microtime()));
return $string;
}
function size_BKM($size){ // B/KB/MB单位转换
if($size < 1024)
{
$size_BKM = (string)$size . " B";
}
elseif($size < (1024 * 1024))
{
$size_BKM = number_format((double)($size / 1024),1) . " KB";
}else
{
$size_BKM = number_format((double)($size / (1024*1024)),1)." MB";
}
return $size_BKM;
}
}
?>
PHP实战希望本文所述对大家的PHP程序设计有所赞助.
《PHP实例:PHP多文件上传类实例》是否对您有启发,欢迎查看更多与《PHP实例:PHP多文件上传类实例》相关教程,学精学透。小编 jb51.cc为您提供精彩教程。
今天关于PHP封装的多文件上传类实例与用法详解和php 多文件上传的讲解已经结束,谢谢您的阅读,如果想了解更多关于php 常用的文件上传类-可多文件上传、PHP单文件上传的过程化函数封装 php多文件上传插件 php文件上传插件 php ftp上传文、php多文件上传类及用法实例详解、PHP多文件上传类实例的相关知识,请在本站搜索。
本文标签: