Tengo múltiples campos de entrada con el mismo nombre. parecen:

<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[]" />
...
...

Estoy cargando con este código:

<?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);
    };
?>

El problema es que este código solo cargará la primera imagen de los campos de entrada.

¿Cómo debo reescribir mi código para cargar todos los campos de entrada? (Sé que tengo que dar a mis archivos nombres únicos en ese caso, pero esa no es mi pregunta. Me pregunto cómo decirle a PHP que tiene que recorrer todos los campos de entrada y realizar la carga.

¡Gracias de antemano!

0
maxischl 26 dic. 2016 a las 17:34

3 respuestas

La mejor respuesta

Use un bucle foreach:

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

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

En su ejemplo, el nombre de su matriz es $_POST['image-to-upload'] para que pueda recorrerlo:

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);
}
1
miken32 21 sep. 2017 a las 19:38

Para iterar todos los archivos use foreach loop

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

      //Code

    }

Vea este enlace para una mejor comprensión:

Matriz de archivos múltiples de PHP

0
Community 23 may. 2017 a las 11:46

Declare una matriz y equípela a sus datos de publicación como $ arr = new array (); $ arr = $ _POST ["img []"]; y con un bucle for puede recorrer su matriz

0
Yusif 21 sep. 2017 a las 19:56