ayuda subir varios archivos

Iniciado por kakashi20, 14 Febrero 2011, 23:00 PM

0 Miembros y 1 Visitante están viendo este tema.

kakashi20

hola tengo este código con el cual subo varios archivos, pero en la parte del upload no me funciona, no me muestra los nombre de los archivos que subio...

Aquí dejo el código

index.php

<form action="upload.php" method="post">

Archivo 1: <input type="file" name="archivo[]"><br />
Archivo 2: <input type="file" name="archivo[]"><br />
Archivo 3: <input type="file" name="archivo[]"><br />
Archivo 4: <input type="file" name="archivo[]"><br />

<input name="enviar" type="submit" id="enviar" value="Subir Archivo" /><br />


</form>

upload.php

<?php
$archivo = $_POST['archivo'];
$count = count($archivo);


for ($i=0;$i<$count;$i++){

$nombre = $_FILES["archivo"]['name'];
echo $nombre;

}

?>


Si alguien me pudiese ayudar se lo agradecería

JungleBoogie

#1
index.php:

<form action="upload.php" method="post" enctype="multipart/form-data">
Archivo 1: <input type="file" name="archivo0"><br />
Archivo 2: <input type="file" name="archivo1"><br />
Archivo 3: <input type="file" name="archivo2"><br />
Archivo 4: <input type="file" name="archivo3"><br />

<input name="enviar" type="submit" id="enviar" value="Subir Archivo" /><br />
</form>


upload.php

<?php 
for ($i=0;$i<4;$i++){

$nombre $_FILES['archivo'$i]['name'];
echo 
$nombre;

}

?>


Castg!

#2
upload.php

Código (php) [Seleccionar]
<?php
for ($i=0;$i<count($_FILES['name']);$i++){
$nombre $_FILES["archivo"]['name'][$i];
echo $nombre;
}
?>

WHK

#3
si no sabe lo que te está devolviendo prueba con print_r($_FILES);

si bien recuerdo cuando son multiples archivo retorna un array multidimensional con un indice numérico

$_FILES[id][...datos...]

pero ojo que cuando se sube un solo archivo retorna un array sin indice

$_FILES[...datos...]

asi que lo que hago es que si se ha subido un solo archivo entonces que le de un indice cero y despues que lo procese.

Dale un vistazo a una clase que hize hace tiempo:
Código (php) [Seleccionar]
function guardar_subidos($directorio_almacenamiento, $extensiones_permitidas = false, $crear_directorio = false, $un_solo_archivo = false){
  /* Verifica si hay archivos subidos para ser recibidos */
  if(is_array($_FILES)){
   if(count($_FILES) < 1){
    return false;
   }
  }else{
   return false;
  }

  if($un_solo_archivo){
   if(count($_FILES) > 1){
    return array(
     'estado' => 'error',
     'descripcion_error' => 'Solo es permitido subir un solo archivo y se ha detectado mas de uno'
    );
   }
  }

  /* Verifica si el directorio de guardado es válido o no */
  if(!is_dir($directorio_almacenamiento)){
   if($crear_directorio){
    if(!mkdir($directorio_almacenamiento, 0755)){
     return array(
      'estado' => 'error',
      'descripcion_error' => 'El directorio a guardar los archivos subidos no existe y fue imposible crear'
     );
    }
   }else{
    return array(
     'estado' => 'error',
     'descripcion_error' => 'El directorio a guardar los archivos subidos no existe'
    );
   }
  }

  /* Limpia la ruta del directorio evitando doble slashses y null bytes */
  $directorio_almacenamiento = dirname($directorio_almacenamiento.'/archivo.ext').'/';

  /* Si no existe el directorio entonces lo creará */
  if(!is_dir($directorio_almacenamiento)){
   if(!mkdir($directorio_almacenamiento, 0755))
    return array(
     'estado' => 'error',
     'descripcion_error' => 'No se pudo crear el nuevo directorio. Verifique los permisos de escritura sobre el directorio raiz'
    );
  }

  /* Procesa cada archivo subido para pasar de un array con uno a dos dimensiones a una sola dimensión */
  foreach($_FILES as $nombre_array => $archivo){
   /* Verifica si se ha subido un solo archivo o varios */
   if(is_array($_FILES[$nombre_array]['name'])){ /* Múltiples archivos */
    /* Procesa cada archivo subido */
    foreach($_FILES[$nombre_array]['name'] as $id => $nombre){
     /* Verifica que no sea un input vacio */
     if($_FILES[$nombre_array]['name'][$id]){
      $subidos[] = array(
       'name' => $_FILES[$nombre_array]['name'][$id],
       'type' => $_FILES[$nombre_array]['type'][$id],
       'tmp_name' => $_FILES[$nombre_array]['tmp_name'][$id],
       'error' => $_FILES[$nombre_array]['error'][$id],
       'size' => $_FILES[$nombre_array]['size'][$id]
      );
     }
    }
   }else{ /* Un solo archivo */
    $subidos[] = $archivo;
   }
  }

  /* Verifica si se ha subido algún archivo */
  if(is_array($subidos)){
   /* Procesa cada archivo subido previamente filtrado en un solo array de una dimensión */
   foreach($subidos as $subido){
    if(is_array($extensiones_permitidas)){
     if(archivos::coincide_extension($subido['name'], $extensiones_permitidas)){
      if(move_uploaded_file($subido['tmp_name'], $directorio_almacenamiento.$subido['name'])){
       $resultados[] = array(
        'estado' => 'ok',
        'name' => $subido['name'],
        'type' => $subido['type'],
        'error' => $subido['error'],
        'size' => $subido['size']
       );
      }else{
       $resultados[] = array(
        'estado' => 'error',
        'descripcion_error' => 'El archivo "'.$subido['name'].'" no pudo ser movido. Verifique los permisos de escritura sobre el directorio raiz',
        'name' => $subido['name'],
        'type' => $subido['type'],
        'error' => $subido['error'],
        'size' => $subido['size']
       );
      }
     }else{
      $resultados[] = array(
       'estado' => 'error',
       'descripcion_error' => 'El archivo "'.$subido['name'].'" contiene una extensión no válida',
       'name' => $subido['name'],
       'type' => $subido['type'],
       'error' => $subido['error'],
       'size' => $subido['size']
      );
     }
    }else{
     if(move_uploaded_file($subido['tmp_name'], $directorio_almacenamiento.$subido['name'])){
      $resultados[] = array(
       'estado' => 'ok',
       'name' => $subido['name'],
       'type' => $subido['type'],
       'error' => $subido['error'],
       'size' => $subido['size']
      );
     }else{
      $resultados[] = array(
       'estado' => 'error',
       'descripcion_error' => 'El archivo "'.$subido['name'].'" no pudo ser movido',
       'name' => $subido['name'],
       'type' => $subido['type'],
       'error' => $subido['error'],
       'size' => $subido['size']
      );
     }
    }
   }
  }else{
   return array(
    'estado' => 'error',
    'descripcion_error' => 'No hay archivos para ser subidos'
   );
  }

  /* Retorna el resultado */
  return array(
   'estado' => 'ok',
   'datos' => $resultados
  );
}

Castg!

Exactamente lo que hice fue probar su método con un print_r y a partir de ello realicé ese código que me funcionó. Creo que debe haber sido de utilidad porque no volvió a comentar...