<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<form action="doAction3.php" method="post" enctype="multipart/form-data">
請選擇上傳文件:<input type="file" name="myFile[]" /><br/>
請選擇上傳文件:<input type="file" name="myFile[]" /><br/>
請選擇上傳文件:<input type="file" name="myFile[]" /><br/>
請選擇上傳文件:<input type="file" name="myFile1" /><br/>
請選擇上傳文件:<input type="file" name="myFile2" /><br/>
<input type="submit" value="上傳"/>
</form>
</body>
</html>
$fileInfo=uploadFile();
print_r($fileInfo);
/**
* 生成唯一字符串
* @return string
*/
function getUniName(){
return md5(uniqid(microtime(true),true));
}
/**
* 得到文件的擴展名
* @param string $filename
* @return string
*/
function getExt($filename){
return strtolower(end(explode(".",$filename)));
}
/**
* 構建上傳文件信息
* @return array
*/
function buildInfo(){
$i=0;
foreach($_FILES as $v){
//單文件
if(is_string($v['name'])){
$files[$i]=$v;
$i++;
}else{
//多文件
foreach($v['name'] as $key=>$val){
$files[$i]['name']=$val;
$files[$i]['size']=$v['size'][$key];
$files[$i]['tmp_name']=$v['tmp_name'][$key];
$files[$i]['error']=$v['error'][$key];
$files[$i]['type']=$v['type'][$key];
$i++;
}
}
}
return $files;
}
function uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152,$imgFlag=true){
if(!file_exists($path)){
mkdir($path,0777,true);
}
$i=0;
$files=buildInfo();
foreach($files as $file){
if($file['error']===UPLOAD_ERR_OK){
$ext=getExt($file['name']);
//檢測文件的擴展名
if(!in_array($ext,$allowExt)){
exit("非法文件類型");
}
//校驗是否是一個真正的圖片類型
if($imgFlag){
if(!getimagesize($file['tmp_name'])){
exit("不是真正的圖片類型");
}
}
//上傳文件的大小
if($file['size']>$maxSize){
exit("上傳文件過大");
}
if(!is_uploaded_file($file['tmp_name'])){
exit("不是通過HTTP POST方式上傳上來的");
}
$filename=getUniName().".".$ext;
$destination=$path."/".$filename;
if(move_uploaded_file($file['tmp_name'],$destination)){
$file['name']=$filename;
unset($file['error'],$file['tmp_name'],$file['size'],$file['type']);
$uploadedFiles[$i]=$file;
$i++;
}
}else{
switch($file['error']){
case 1:
$mes="超過了配置文件上傳文件的大小";//UPLOAD_ERR_INI_SIZE
break;
case 2:
$mes="超過了表單設置上傳文件的大小"; //UPLOAD_ERR_FORM_SIZE
break;
case 3:
$mes="文件部分被上傳";//UPLOAD_ERR_PARTIAL
break;
case 4:
$mes="沒有文件被上傳";//UPLOAD_ERR_NO_FILE
break;
case 6:
$mes="沒有找到臨時目錄";//UPLOAD_ERR_NO_TMP_DIR
break;
case 7:
$mes="文件不可寫";//UPLOAD_ERR_CANT_WRITE;
break;
case 8:
$mes="由於PHP的擴展程序中斷了文件上傳";//UPLOAD_ERR_EXTENSION
break;
}
echo $mes;
}
}
return $uploadedFiles;
}