PHP - Subida de múltiples ficheros

 
Vista:
sin imagen de perfil

Subida de múltiples ficheros

Publicado por Elisa (71 intervenciones) el 10/06/2014 13:18:36
Buenos días. Estoy intentando subir varios archivos a la vez en una carpeta que previamente creo en el mismo php de subida. Mi html es:

1
2
3
4
5
6
<form action = 'insertar_contenido1.php' method = 'post' enctype = 'multipart/form-data'>
        <table cellspacing="2" cellpadding="2" border="1">
			<input type = "file" name = 'cliente' multiple/><br/>
			<input type = "submit" name = "enviar" value = "Subir contenido"/><br/>
        </table>
<form>

y mi php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$formatos = array('.ppt', '.pdf', '.gif', '.mpg', '.jpg', '.png', '.doc', '.xlsx');
$nombreDirectorio = "C:/raspberries/".$fila["Dispositivos"]."/contenido". $sigcarpeta . "/";
$nombreFichero = $_FILES['cliente']['name'];
$nombreCompleto = $nombreDirectorio . $nombreFichero;
$ext = substr($nombreFichero, strrpos($nombreFichero, '.'));
 
if(in_array($ext, $formatos)){
	foreach (($_FILES['cliente']['error']) as $key => $error) {
		if ($error == UPLOAD_ERR_OK) {
			$tmp_name = $_FILES['cliente']['tmp_name'][$key];
			$name = $_FILES['cliente']['name'][$key];
			copy($_FILES['cliente']['tmp_name'], $nombreCompleto);
		}else {
			echo "No se ha podido subir el fichero.<br>";
			echo '<a href = "seleccionar.html">Insertar nuevo contenido.<br></a>';
		}
	}
}else{
	echo "Archivo con extensión no permitida.<br>";
	echo '<a href = "seleccionar.html">Insertar nuevo contenido.<br></a>';
}

No se qué es lo que estoy haciendo mal pero no me sube los archivos porque me aparece este aviso:

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Trabajo\insertar_contenido1.php on line 70

Alguien puede ayudarme? Mil gracias!
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Subida de múltiples ficheros

Publicado por xve (6935 intervenciones) el 10/06/2014 16:22:54
Hola Elisa, el problema que tienes, es que en tu foreach pones:
1
foreach (($_FILES['cliente']['error']) as $key => $error)

y $_FILES['cliente']['error'] creo que no es correcto, y creo que tendría que ser:
1
2
3
foreach (($_FILES['cliente']) as $cliente){
    if($cliente["error"]==UPLOAD_ERR_OK)
    ...

De igual modo,la linea
1
$nombreFichero = $_FILES['cliente']['name'];
creo que también es erronea... y si quiers coger el primer nombre, tendría que ser:
1
$nombreFichero = $_FILES['cliente'][0]['name'];

Puedes probarlo y comentarnos?
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

Subida de múltiples ficheros

Publicado por Elisa (71 intervenciones) el 11/06/2014 08:55:46
Buenos días. Cuando corrijo el primer error, si selecciono un archivo para subirlo, me dice:

Warning: Illegal string offset 'error' in C:\xampp\htdocs\Trabajo\insertar_contenido1.php on line 71.

Como es un warning sí que lo sube pero no entiendo porqué sale esto...si selecciono varios ficheros, que es lo que quiero, no funciona, me vuelve a salir el warning y no hace nada.

Además, si corrijo el segundo error, directamente me dice que es un archivo con extensión no permitida.

He probado a cambiar 1000 cosas y no doy con la forma de subir varios ficheros a la vez...
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