2012-12-18 85 views
-1

我試圖上傳多個圖像到我的服務器,我有以下工作,如果上傳一個單一的形象,只有我不確定我下一步去哪裏?多圖像上傳PHP,循環?

我有一個POST表單提交3張圖片,下面只上傳第一張,我需要爲每張圖片創建一個while循環嗎?

到目前爲止,香港專業教育學院的書面...

$allowedExts = array("jpg", "jpeg", "gif", "png"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . date('U')."-".$_FILES["file"]["name"]); // add a unique string to the uploaded filename so that it is unique. 
     echo "Stored in: " . "upload/" . date('U')."-".$_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 

} 

任何人能看到我去錯了嗎?

+0

不要**不**使用這個腳本。你有多個嚴重的「請接管我的服務器」漏洞。 –

+0

@MarcB這將有助於闡述! – Mansfield

+0

依賴於MIME類型可能很危險,因爲它很容易通過創建混合文件來欺騙它們(頭部部分負責識別,其餘部分是惡意的),但除此之外我沒有看到任何更嚴重的事情。謹慎精心製作MarcB? – brezanac

回答

0

如果你想使用你的腳本,你可以做到這一點:

for($i = 0; $i < 3; $i++) { 
$aFile = $_FILES['file'][$i]; 

// your code ($_FILES['file']['tmp_name'] should be addressed like $aFile['tmp_name'] and so on.. 
} 
+0

對不起@Ben,我把我的代碼放在2括號之間嗎? – Liam

+0

是的,你循環遍歷'$ _FILES'的數組。當你上傳一個文件時,你可以通過'$ _FILES ['dom_name'] ['name']'來解決它,當你上傳多個文件時,你可以像'$ _FILES ['dom_name'] [0] [' name']','$ _FILES ['dom_name'] [1] ['name']'等 – Ben