2016-12-26 24 views
0

我有多個輸入字段具有相同的名稱。他們看起來像:PHP通過輸入字段名稱相同的循環,全部上傳

<input type="hidden" class="image-hidden" name="image-to-upload[]" /> 
<input type="hidden" class="image-hidden" name="image-to-upload[]" /> 
<input type="hidden" class="image-hidden" name="image-to-upload[]" /> 
<input type="hidden" class="image-hidden" name="image-to-upload[]" /> 
... 
... 

我這個代碼上傳:

<?php 
    if(isset($_POST['new-blogpost'])) { 
     $img = $_POST['image-to-upload'][0]; 
     $img = str_replace('data:image/jpeg;base64,', '', $img); 
     $img = str_replace(' ', '+', $img); 
     $data = base64_decode($img); 
     $file = 'image.jpg'; 
     $success = file_put_contents($file, $data); 
    }; 
?> 

的問題是,這個代碼將只上載第一個輸入字段的畫面。

如何重寫我的代碼以上傳所有輸入字段? (我知道我必須在這種情況下給我的文件唯一的名稱,但那不是我的問題。我想知道如何告訴PHP它必須遍歷所有輸入字段並執行上傳。 !前進

+0

只需循環變量'$ _POST ['image-to-upload']'。它是一個數組,因此您可以查看其中的所有項目。 – Dekel

+0

好的,謝謝。但我不知道該怎麼做:/試圖找出它,但我不明白 – Maxischl

+0

在谷歌搜索「通過數組的PHP循環」給出了第一個結果:http://php.net /manual/en/control-structures.foreach.php – Dekel

回答

1

使用foreach循環:

$list = ['apple', 'banana', 'cherry']; 

foreach ($list as $value) { 
    if ($value == 'banana') { 
     continue; 
    } 
    echo "I love to eat {$value} pie.".PHP_EOL; 
} 

在您的例子 - 你的陣列的名字是$_POST['image-to-upload']這樣你就可以在它的循環:

foreach($_POST['image-to-upload'] as $img) { 
    $img = str_replace('data:image/jpeg;base64,', '', $img); 
    $img = str_replace(' ', '+', $img); 
    $data = base64_decode($img); 
    // $file = 'image.jpg'; // here you need to create the unique filename 
    $success = file_put_contents($file, $data); 
} 
0

對於迭代中的所有文件使用foreach循環

foreach($_FILES['image-to-upload']['tmp_name'] as $key => $tmp_name) 
    { 

     //Code 

    } 

請參閱此鏈接更多的理解:

PHP Multiple File Array

+0

你讀過這個問題嗎?這與多個文件上傳完全無關 – Dekel

0

聲明數組並等同於您的文章數據,如$arr =new array(); $arr = $_POST["img[]"]; 與一個for循環,你可以通過你的數組循環

相關問題