PHP - upload multiple files

 
Vista:
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

upload multiple files

Publicado por Gonzalo (615 intervenciones) el 21/03/2017 23:36:58
lo prometido es deuda, favor de leer este post con musica de richard clayderman.

buenos dias a todos.

estoy tratando de usar este codigo, pero me regresa cero archivos seleccionados cuando el mismo imput dice "10 archivos seleccionados"

alguien ha solucionado este problema?

gracias.

codigo html

1
2
3
4
<form action='save.php' method='post' enctype='multipart/form-data'>
<input name="uploads" type="file" multiple="multiple" />
<input type='submit' value="Upload File">
</form>

codigo php regresa cero archivos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$files = array();
$fdata = $_FILES["uploads"];
if (is_array($fdata["name"])) {//This is the problem
        for ($i = 0; $i < count($fdata['name']); ++$i) {
                $files[] = array(
                    'name' => $fdata['name'][$i],
                    'tmp_name' => $fdata['tmp_name'][$i],
                );
        }
} else {
        $files[] = $fdata;
}
 
foreach ($files as $file) {
        // uploaded location of file is $file['tmp_name']
        // original filename of file is $file['file']
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

upload multiple files

Publicado por kip (877 intervenciones) el 22/03/2017 03:40:20
Hola, agrega al atributo name los [] para que desde el script PHP destino este sea interpretado como una array:

1
<input name="uploads[]" type="file" multiple="multiple" />

Creo que con eso bastaria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

upload multiple files

Publicado por Alejandro (837 intervenciones) el 22/03/2017 15:48:43
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Kip, yo tube problemas cuando quise usar [] porque lo recibes como, tomando el ejemplo, $_FILES["upload[]"] en mi caso era $_POST[]

Gonzalo, lo que recibes es un arreglo de arreglos, llamado arreglos multidimensionales o para los compas matrices.

Asi obtienes el primer archivo, tendrias que cambiar el indice para obtener los demas.

1
2
3
4
5
6
7
if (is_array($fdata)) {
        for ($i = 0; $i < count($fdata); ++$i) {
                $files[] = array(
                    'name' => $fdata[$i]['name'],
                    'tmp_name' => $fdata[$i]['tmp_name'],
                );
        }...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

upload multiple files

Publicado por Gonzalo (615 intervenciones) el 22/03/2017 19:25:39
Gracias don Alejandro y gracias Kip.

la referencia es buena pero en ese caso solamente me permite subir 2 archivos a la vez.

la idea es que puedan subir mas de 50 formatos de una sola vez.

esta orden html me permite seleccionar los 50 archivos

<input name="uploads[]" type="file" multiple="multiple" />

pero al procesar no regresa ninguno, marca 0 elementos a pesar de que el input indica que se seleccionaron los 50.

por cierto, en php.ini tengo este valor

max_file_uploads = 100

y los archivos no pesan mas de 20k cada uno, asi que no es por el maximo permitido, el problema esta en otro lado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

upload multiple files

Publicado por kip (877 intervenciones) el 23/03/2017 01:01:51
Yo he probado con el codigo que tienes y me funciona perfectamente agregando los [], estos van obligatoriamente !

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
	if ( ! empty($_FILES)) {
		$files = array();
		$fdata = $_FILES["uploads"];
		if (is_array($fdata["name"])) {//This is the problem
		        for ($i = 0; $i < count($fdata['name']); ++$i) {
		                $files[] = array(
		                    'name' => $fdata['name'][$i],
		                    'tmp_name' => $fdata['tmp_name'][$i],
		                );
		        }
		} else {
		        $files[] = $fdata;
		}
		echo '<pre>';
		print_r($files);//Muestro la info de los archivos
	}
?>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TEST</title>
	</head>
	<body>
		<form action='#' method='post' enctype='multipart/form-data'>
			<input name="uploads[]" type="file" multiple="multiple" />
			<input type='submit' value="Upload File">
		</form>
	</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar