多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个上传文件域,我们可以手动进行修改,另外这个页面嵌套了 uploadFile.php 文件上传类,下面一起来看例子。<?php
header('content-type:text/html;charset=utf-8');
require('uploadFile.php');
if(isset($_POST['submit'])){
$uploads=$_FILES['file'];
$num_file=count($uploads['name']);
$up=newUploadFile($uploads,'uploads',1024);
$num=$up->upload();
if($num==$num_file){
echo'全部文件上传成功';
exit;
}else{
echo$num,'个文件上传成功
';
echo$up->showErrorInfo();
exit;
}
}
?>html>
无标题文档
文件上传类代码<?php
/*------------*/
classUploadFile{
var$user_post_file=array();
var$save_file_path='';
var$max_file_size='';
var$allow_type=array(
'gif',
'jpg',
'png',
'zip',
'rar',
'txt',
'doc',
'pdf'
);
var$final_file_path='';
var$save_info=array();
var$error_info=array();
/**
*构造函数,用于初始化信息。
*
*@paramArray$file
*@paramString$path
*@paramInteger$size
*@paramArray$type
*/
function__construct($file,$path,$size=2097152,$type=''){
$this->user_post_file=$file;
$this->save_file_path=$path;
$this->max_file_size=$size;
if(!$type=''){
$this->allow_type[]=$type;
}
}
/**
*
*
*@accesspublic
*@returnint
*/
functionupload(){
for($i=0;$iuser_post_file['name']);$i++){
if($this->user_post_file['error'][$i]==0){//上传文件状态正常
//获取当前文件名,临时文件名,大小,类型,扩展名
$name=$this->user_post_file['name'][$i];
$tmp_name=$this->user_post_file['tmp_name'][$i];
$size=$this->user_post_file['size'][$i];
$type=$this->user_post_file['type'][$i];
$ext_name=$this->getExtName($name);
//文件大小
if(!$this->checkSize($size)){
$this->error_info[]='您上传的文件:'.$name.'太大';
continue;
}
//扩展名
if(!$this->checkType($ext_name)){
$this->error_info[]='您上传的文件:'.$name.'不合法';
continue;
}
//非法上传
if(!is_uploaded_file($tmp_name)){
$this->error_info[]='您上传的文件:'.$name.'属于非法提交';
continue;
}
//
$basename=$this->getBaseName($name,".".$ext_name);
$final_filename=$basename.'-'.time().'-'.rand(1,10000).'.'.$ext_name;
$this->final_file_path=$this->save_file_path.'/'.$final_filename;
if(!move_uploaded_file($tmp_name,$this->final_file_path)){
$this->error_info=$this->user_post_file['error'][$i];
continue;
}
//
$this->save_info[]=array(
"name"=>$name,
"ext_name"=>$ext_name,
"type"=>$type,
"size"=>$size,
"final_filename"=>$final_filename,
"path"=>$this->final_file_path
);
}
}
returncount($this->save_info);
}
/*
*检查用户上传文件的大小时候合法
*
*@paramInteger$size
*@accessprivate
*@returnboolean
*/
functioncheckSize($size){
if($size>$this->max_file_size){
returnFALSE;
}
returnTRUE;
}
/*
*检查用户上传文件的类型是否合法
*
*@accessprivate
*@returnboolean
*/
functioncheckType($extension){
foreach($this->allow_typeas$type){
if(strcasecmp($extension,$type)==0){
returnTRUE;
}
}
returnFALSE;
}
/*
*获取文件的扩展名
*
*@paramstring$filename
*@accessprivate
*@returnstring
*/
functiongetExtName($filename){
$p=pathinfo($filename);
return$p['extension'];
}
/*
*获取文件名(不包括扩展名)
*
*@paramstring$filename
*@paramstring$type
*@accessprivate
*@returnboolean
*/
functiongetBaseName($filename,$ext_name){
$basename=basename($filename,$ext_name);
return$basename;
}
/*
*
*
*
*/
functionshowErrorInfo(){
if(count($this->error_info)!=0){
//echo'error...
';
foreach($this->error_infoas$k=>$v){
echo($k+1),':',$v,'
';
}
}
}
functiongetSaveInfo(){
return$this->save_info;
}
}
//$upload=newUploadFile('','');
//$upload=newUploadFile();
//$upload->showErrorInfo();
?>
转载随意,但请附上文章地址:-)