multifileupload.html
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="multifileupload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image[]">
<input type="file" name="image[]">
<input type="file" name="image[]">
<input type="submit" value="上傳">
</form>
</body>
</html>
multifileupload.php
<?php
header('content-type:text/html;charset=utf-8');
echo '<pre>';
//var_dump($_FILES);
//讀取檔案
$image=$_FILES['image'];
//包含上傳函數
include_once 'fileUpload.php';
$type=array('image/jpeg','image/jpg','image/png','image/gif');
//循環上傳
for ($i=0,$len=count($image['name']);$i<$len;$i++){
$file=array(
'name'=>$image['name'][$i],
'type'=>$image['type'][$i],
'tmp_name'=>$image['tmp_name'][$i],
'error'=>$image['error'][$i],
'size'=>$image['size'][$i]
);
//調用檔案上傳函數
$res=fileUpload($file,'Upload/',$error,$type);
if ($res){
echo '檔案上傳成功,對應的檔案名是:'.$res.'<br>';
}
else{
echo $error;
}
}
封裝的檔案上傳函數:fileUpload.php
<?php
//檔案上傳函數封裝
/*
* @param1 array $file,要上傳的檔案資訊,包含5個元素
*@param2 string $path,存儲位置
* @param3 $string error,錯誤資訊
* @param4 array $type=array(),MIME類型限定
* @param5 int $size=2000000,預設2M
* @return mixed, 成功傳回檔案名,失敗傳回false
*/
function fileUpload($file,$path,&$error,$type=array(),$size=2000000 ){
//判斷本身檔案是否有效
if(!isset($file['error'])){
$error='檔案無效';
return false;
}
//有效路徑的判斷
if(!is_dir($path)){
$error='存儲路徑無效';
return false;
}
//判斷檔案本身上傳是否成功
switch ($file['error']){
case 1:
case 2:
$error='檔案超過伺服器允許大小';
return false;
case 3:
$error='檔案隻有部分上傳';
return false;
case 4:
$error='使用者沒有選擇檔案上傳';
return false;
case 6:
case 7:
$error='伺服器操作失敗';
return false;
}
//判斷類型是否符合
if (!empty($type) && !in_array($file['type'],$type)){
$error='目前上傳的檔案類型不符合';
return false;
}
//大小判斷
if ($file['size']>$size){
$error='檔案大小超過目前允許範圍.目前允許大小是:'.string($size/1000000).'M';
return false;
}
//轉存,移動檔案
$newfilename=getNewName($file['name']);
if(@move_uploaded_file($file['tmp_name'],$path.''.$newfilename)){
return $newfilename;
}
else{
$error='檔案上傳失敗';
return false;
}
}
//随機産生一個檔案名
function getNewName($filename,$rand=6){
$newname=date('YmdHis');//時間日期部分
//随機部分
$old=array_merge(range('a','z'),range('A','Z'));
shuffle($old);
for ($i=0;$i<$rand;$i++){
$newname.=$old[$i];
}
return $newname.strstr($filename,'.');//組織有效檔案名
}
上傳成功:
上傳失敗就顯示出其原因