Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: kakashi20 en 14 Febrero 2011, 23:00 pm



Título: ayuda subir varios archivos
Publicado por: kakashi20 en 14 Febrero 2011, 23:00 pm
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


Título: Re: ayuda subir varios archivos
Publicado por: JungleBoogie en 14 Febrero 2011, 23:31 pm
index.php:
Código:
<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
Código:
<?php 
for ($i=0;$i<4;$i++){

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

}

?>


Título: Re: ayuda subir varios archivos
Publicado por: Castg! en 15 Febrero 2011, 00:46 am
upload.php

Código
  1. <?php
  2. for ($i=0;$i<count($_FILES['name']);$i++){
  3. $nombre = $_FILES["archivo"]['name'][$i];
  4. echo $nombre;
  5. }
  6. ?>


Título: Re: ayuda subir varios archivos
Publicado por: WHK en 19 Febrero 2011, 02:19 am
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
  1. function guardar_subidos($directorio_almacenamiento, $extensiones_permitidas = false, $crear_directorio = false, $un_solo_archivo = false){
  2.  /* Verifica si hay archivos subidos para ser recibidos */
  3.  if(is_array($_FILES)){
  4.   if(count($_FILES) < 1){
  5.    return false;
  6.   }
  7.  }else{
  8.   return false;
  9.  }
  10.  
  11.  if($un_solo_archivo){
  12.   if(count($_FILES) > 1){
  13.    return array(
  14.     'estado' => 'error',
  15.     'descripcion_error' => 'Solo es permitido subir un solo archivo y se ha detectado mas de uno'
  16.    );
  17.   }
  18.  }
  19.  
  20.  /* Verifica si el directorio de guardado es válido o no */
  21.  if(!is_dir($directorio_almacenamiento)){
  22.   if($crear_directorio){
  23.    if(!mkdir($directorio_almacenamiento, 0755)){
  24.     return array(
  25.      'estado' => 'error',
  26.      'descripcion_error' => 'El directorio a guardar los archivos subidos no existe y fue imposible crear'
  27.     );
  28.    }
  29.   }else{
  30.    return array(
  31.     'estado' => 'error',
  32.     'descripcion_error' => 'El directorio a guardar los archivos subidos no existe'
  33.    );
  34.   }
  35.  }
  36.  
  37.  /* Limpia la ruta del directorio evitando doble slashses y null bytes */
  38.  $directorio_almacenamiento = dirname($directorio_almacenamiento.'/archivo.ext').'/';
  39.  
  40.  /* Si no existe el directorio entonces lo creará */
  41.  if(!is_dir($directorio_almacenamiento)){
  42.   if(!mkdir($directorio_almacenamiento, 0755))
  43.    return array(
  44.     'estado' => 'error',
  45.     'descripcion_error' => 'No se pudo crear el nuevo directorio. Verifique los permisos de escritura sobre el directorio raiz'
  46.    );
  47.  }
  48.  
  49.  /* Procesa cada archivo subido para pasar de un array con uno a dos dimensiones a una sola dimensión */
  50.  foreach($_FILES as $nombre_array => $archivo){
  51.   /* Verifica si se ha subido un solo archivo o varios */
  52.   if(is_array($_FILES[$nombre_array]['name'])){ /* Múltiples archivos */
  53.    /* Procesa cada archivo subido */
  54.    foreach($_FILES[$nombre_array]['name'] as $id => $nombre){
  55.     /* Verifica que no sea un input vacio */
  56.     if($_FILES[$nombre_array]['name'][$id]){
  57.      $subidos[] = array(
  58.       'name' => $_FILES[$nombre_array]['name'][$id],
  59.       'type' => $_FILES[$nombre_array]['type'][$id],
  60.       'tmp_name' => $_FILES[$nombre_array]['tmp_name'][$id],
  61.       'error' => $_FILES[$nombre_array]['error'][$id],
  62.       'size' => $_FILES[$nombre_array]['size'][$id]
  63.      );
  64.     }
  65.    }
  66.   }else{ /* Un solo archivo */
  67.    $subidos[] = $archivo;
  68.   }
  69.  }
  70.  
  71.  /* Verifica si se ha subido algún archivo */
  72.  if(is_array($subidos)){
  73.   /* Procesa cada archivo subido previamente filtrado en un solo array de una dimensión */
  74.   foreach($subidos as $subido){
  75.    if(is_array($extensiones_permitidas)){
  76.     if(archivos::coincide_extension($subido['name'], $extensiones_permitidas)){
  77.      if(move_uploaded_file($subido['tmp_name'], $directorio_almacenamiento.$subido['name'])){
  78.       $resultados[] = array(
  79.        'estado' => 'ok',
  80.        'name' => $subido['name'],
  81.        'type' => $subido['type'],
  82.        'error' => $subido['error'],
  83.        'size' => $subido['size']
  84.       );
  85.      }else{
  86.       $resultados[] = array(
  87.        'estado' => 'error',
  88.        'descripcion_error' => 'El archivo "'.$subido['name'].'" no pudo ser movido. Verifique los permisos de escritura sobre el directorio raiz',
  89.        'name' => $subido['name'],
  90.        'type' => $subido['type'],
  91.        'error' => $subido['error'],
  92.        'size' => $subido['size']
  93.       );
  94.      }
  95.     }else{
  96.      $resultados[] = array(
  97.       'estado' => 'error',
  98.       'descripcion_error' => 'El archivo "'.$subido['name'].'" contiene una extensión no válida',
  99.       'name' => $subido['name'],
  100.       'type' => $subido['type'],
  101.       'error' => $subido['error'],
  102.       'size' => $subido['size']
  103.      );
  104.     }
  105.    }else{
  106.     if(move_uploaded_file($subido['tmp_name'], $directorio_almacenamiento.$subido['name'])){
  107.      $resultados[] = array(
  108.       'estado' => 'ok',
  109.       'name' => $subido['name'],
  110.       'type' => $subido['type'],
  111.       'error' => $subido['error'],
  112.       'size' => $subido['size']
  113.      );
  114.     }else{
  115.      $resultados[] = array(
  116.       'estado' => 'error',
  117.       'descripcion_error' => 'El archivo "'.$subido['name'].'" no pudo ser movido',
  118.       'name' => $subido['name'],
  119.       'type' => $subido['type'],
  120.       'error' => $subido['error'],
  121.       'size' => $subido['size']
  122.      );
  123.     }
  124.    }
  125.   }
  126.  }else{
  127.   return array(
  128.    'estado' => 'error',
  129.    'descripcion_error' => 'No hay archivos para ser subidos'
  130.   );
  131.  }
  132.  
  133.  /* Retorna el resultado */
  134.  return array(
  135.   'estado' => 'ok',
  136.   'datos' => $resultados
  137.  );
  138. }


Título: Re: ayuda subir varios archivos
Publicado por: Castg! en 20 Febrero 2011, 07:54 am
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...