jueves, 23 de diciembre de 2010

Upload para múltiples archivos en PHP

Hace tiempo que no escribia por la facultad, pero hoy me decidi a subir un codigo en PHP que desarrolle para subir varios archivos de una sola vez, ideal para uploads de fotos.

Bueno comencemos. Primero que nada desarrolle una pagina en HTML con dos formularios, uno de ellos contiene los campos donde se van a indicar los archivos a subir y su correspondiente boton para enviar el formulario a un modulo que se encarga de subirlos; el segundo formulario hace una recarga de la pagina enviando un parámetro por POST que indica la cantidad de archivos que queremos subir. Es decir que la cantidad de archivos a subir lo indicamos nosotros.

index.php

<form action="subir.php" enctype="multipart/form-data" method="post" name="Upload">
[php]
 if(isset($_POST['cant_archivos'])){
  $cant = $_POST['cant_archivos'];
 }
 else{
  $cant = 2;
 }

 $x = 1;
 while($x &lt;= $cant){
  echo "Archivo numero $x: <input name="archivo$x" type="file" />";
  $x++;
 }
echo "<input name="cant" type="hidden" value="$cant" />";
[/php]
<input name="submit" type="submit" value="Subir archivos" />
</form>
<form action="?" method="post" name="c_archivos">
Cantidad de archivos:
  <input name="cant_archivos" type="text" />
<input name="submit" type="submit" value="Modificar" />
</form>

Este código representa nuestra pagina donde esta el uploader, el otro código recibe los archivos enviados por esta página y los almacena en el directorio raíz donde se está ejecutando el script.



subir.php

$cant = $_POST['cant'];
$cant = $_POST['cant'];

$no_sub = 0;
$sub = 0;

$x = 1;
while($x <= $cant){
if(is_uploaded_file($_FILES["archivo".$x]['tmp_name'])){
$nombre = $_FILES["archivo".$x]['tmp_name'];
$ruta = "./" . $_FILES["archivo".$x]['name'];
copy($nombre, $ruta);
$sub++;
}
else{
$no_sub++;
}
$x++;
}
echo "Cantidad de archivos subidos: $sub";
echo "Cantidad de archivos no subidos: $no_sub";

La falta de algunas etiqueta como <?PHP ?> por ejemplo se debe a que blogger no me deja colocarlas, pero ya le voy a encontrar la vuelta.

Espero haya sido interesante, cualquier duda sobre el código solo pregunten. Saludos!

No hay comentarios: