多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个上传文件域,我们可以手动进行修改,另外这个页面嵌套了 uploadFile.php 文件上传类,下面一起来看例子.
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 = new UploadFile( $uploads , 'uploads' ,1024);
$num = $up ->upload();
if ( $num == $num_file ){
echo '全部文件上传成功' ;
exit ;
} else {
echo $num , '个文件上传成功<br/>' ;
echo $up ->showErrorInfo();
exit ;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns= "http://www.111cn.net/ 1999/xhtml" >
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<form action= "uup.php" method= "post" enctype= "multipart/form-data" >
<p><input name= "file[]" type= "file" /></p>
<p><input name= "file[]" type= "file" /></p>
<p><input name= "file[]" type= "file" /></p>
<p><input name= "file[]" type= "file" /></p>
<input name= "submit" type= "submit" />
</form>
</body>
</html>
PHP文件上传类代码,代码如下:
<?php
/*————*/
class UploadFile
{
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 ();
/**
*构造函数,用于初始化信息。
*
*@param Array $file
*@param String $path
*@param Integer $size
*@param Array $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 ;
}
}
/**
*
*
*@access public
*@return int
*/
function upload()
{
for ( $i =0; $i < count ( $this ->user_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
);
}
}
return count ( $this ->save_info);
}
/*
*检查用户上传文件的大小时候合法
*
*@param Integer $size
*@access private
*@return boolean
*/
function checkSize( $size )
{
if ( $size > $this ->max_file_size){
return FALSE;
}
return TRUE;
}
/*
*检查用户上传文件的类型是否合法
*
*@access private
*@return boolean
*/
function checkType( $extension )
{
foreach ( $this ->allow_type as $type ){
if ( strcasecmp ( $extension , $type ) == 0){
return TRUE;
}
}
return FALSE;
}
/*
*获取文件的扩展名
*
*@param string $filename
*@access private
*@return string
*/
function getExtName( $filename )
{
$p = pathinfo ( $filename );
return $p [ 'extension' ];
}
/*
*获取文件名(不包括扩展名)
*
*@param string $filename
*@param string $type
*@access private
*@return boolean
*/
function getBaseName( $filename , $ext_name )
{
$basename = basename ( $filename , $ext_name );
return $basename ;
}
/*
*
*
*
*/
function showErrorInfo()
{
if ( count ( $this ->error_info) != 0){
//echo 'error…<br/>';
foreach ( $this ->error_info as $k => $v ){
echo ( $k +1), ':' , $v , '<br/>' ;
} //开源代码phpfensi.com
}
}
function getSaveInfo()
{
return $this ->save_info;
}
}
//$upload = new UploadFile('','');
//$upload = new UploadFile();
//$upload->showErrorInfo();
?>