2012-01-04 14 views
4

私はHTML5の複数の属性で設定されたファイルアップロードフォームを持っています。html5とphpを使用して複数のファイルをアップロード

ただし、フォームでは1つのファイルしかアップロードされません。私はPHPでループ関数のいくつかの並べ替えを作成する必要がありますか、これを行う別の方法はありますか?

ここに私のコードだ...

形式:

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">   
     <input type="file" multiple="multiple" name="file[]" id="file" /> 
     <input name="submit" type="submit" value="Submit" />  
</form> 

PHP:私はあなたのフィールドには、PHPで <input type="file" multiple="multiple" name="files[]" />

そしてべきであると考えてい

<?php 
if(isset($_POST['submit'])) {   
foreach($_FILES['newsImage'] as $file){ 
if ((($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg"))) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 


    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
} 
} 
?> 
+0

もフォームコードを投稿してください。それは複数の部分から成る仕様を含んでいなければなりません。 – Kris

+2

あなたのコードは1つのファイルしか処理していないようです - あなたの問題はアップロードの面にあるのでしょうか? –

+0

IE(とOperaは私が思う)が ''要素で複数のファイルを選択することをサポートしていないことは注目に値します。 –

答えて

3
for ($i = 0; $i < count($_FILES['newsImage']['name']); $i++) { 
    // handle upload 
} 
+0

あなたはなぜ私の2週間後に答えられた自分の答えを受け入れましたか(これは同じ解決策ですか...)少し奇妙なことに私は認めなければなりません( –

+1

)ファイルの構造上foreachが動作しません$ _FILES ['inputName'] ['name'] ['name'] [0]最初のファイル名に$ _FILES ['inputName'] [0]として定義する必要があります。 1] 2回目など – Erik

+0

これは古い投稿ですが、私もこの問題に遭遇しました。実際、複数のファイルをアップロードすると、配列構造が複雑になります。 foreachを使う方法があると確信していますが、これは簡単です。 –

3

<?php 
    foreach($_FILES['files'] as $file){ 
     // Handle one of the uploads 
    } 
?> 
+0

あなたの返信に基づいて私のコードを修正しましたが、今は何もアップロードしていないようです...任意のアイデア...ありがとう – Tom

+0

あなたのループの中で、まだ '$ _FILES ['file'] ['type '] 'etc ...あなたは' $ file [' type '] '(あなたのファイル配列上のループ内の特定のファイル)を呼び出すべきです。 –

2

私はこのコードが目的に役立つと信じています。 $_FILESアレイをループし、各ファイルのすべての属性のkey => valueのペアを持つ配列を作成します。

$temp = array(); 
foreach ($_FILES['file'] as $key => $value) { 
    foreach($value as $index => $val){ 
     $temp[$index][$key] = $val; 
    } 
} 
関連する問題