2011-09-23 44 views
0

這是我在論壇上的第二個問題。我已經用盡了所有研究自己的途徑。我有一個HTML表單,將用腳本處理。在這種形式下,用戶必須最多上傳10張圖片的選項....每個圖像都有這樣自己的輸入字段...PHP多個文件上傳到服務器

<form action="upload.php" method="post" enctype="multipart/form-data"> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

的PHP是這樣的......

$client = $_POST['company']; 
$date = date("mdy"); 
$clientFolder = $client . $date; 

mkdir('../../../uploads/' . $clientFolder . '/', 0700); 
$folderPath = '../../../uploads/' . $clientFolder . '/'; 



if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 100000)) 
    { 
    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($folderPath . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     $folderPath . $_FILES["file"]["name"]); 
     echo "Stored in: " . $folderPath . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 

我可以正確上傳一個文件,但不能超過一個。我使用這個教程。 http://www.w3schools.com/php/php_file_upload.asp

我需要循環這些嗎?或者我需要唯一的名稱和ID?任何幫助將不勝感激!我是新來的PHP ....我不得不說,但是..我喜歡它!到目前爲止...

回答

0

也許你想以不同的方式命名輸入(比如:文件1,文件2等),然後在PHP中,你會做這樣的事情:

$i = 1; 
while(isset($_POST['file'.$i])){ 
    //do upload here 
    $i++; 
} 

爲什麼你只得到1個文件上傳的原因是因爲你命名了輸入「文件」(並且因爲你沒有循環輸入)。改變它,它應該沒問題。

+0

好吧,我想通過這個想法。我將有<標籤= 「file1的」>文件名: <標籤= 「file2的」>文件名: <輸入type =「file2」name =「file」id =「file2」/> THEN $ i = 0; (isset($ _ POST ['file'。$ i])){ // do upload here --- ???? ((($ _FILES [「file」] [「type」] ==「image/gif」)幷包含整個語句???? //// $ i ++; } – mkrisch76

+0

,包括整個'if'語句 –

+0

對不起,有一個錯誤,'$ i'應該從1開始,而不是0,如果你是從file1命名輸入的話,我已經編輯了我的帖子。 –

1

我還沒有瀏覽完整的代碼,但如果您爲不同的表單元素使用相同的名稱,您將失去除一個以外的所有值。

有一點例外,你可能想使用:加方括號將讓PHP創建數組:

<label for="file">Filename:</label> 
<input type="file" name="file[]"> 

<label for="file">Filename:</label> 
<input type="file" name="file[]"> 

您可以使用var_dump()$_FILES檢查確切結構。

其次,idHTML屬性應該保存唯一的標識符。您的客戶端腳本可能表現錯誤。

+0

這很有趣。 。我很想學習儘可能多的東西,我去了php手冊來檢查我們的var_dump(),但是不能把我的大腦包裹起來,你會給我另外一個提示,告訴我接下來要做什麼嗎? – mkrisch76

+0

The接下來的一步可能是[Handling file uploads](http://www.php.net/manual/en/features.file-upload.php)一章。 –

相關問題