Subir archivos es ahora de vital importancia en cualquier web, subir uno es relativamente facil pero subir varios ya es otro cuento, pero todo va por partes.
1ero. subir un archivo.
lo primero es crear el formulario de subida
Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" name="frmLogin" enctype="multipart/form-data"> Archivo: <input name="file" type="file" /> <input type="submit" value="Inscribir" name="iniciar" /> <input type="button" value="Reset" onclick="valid.reset(); return false"/> </form>
Código PHP:
"<?php echo $_SERVER['PHP_SELF'];?>"
Lo mas importante es que la cabecera del formulario tenga esta sentencia:
Código HTML:
enctype="multipart/form-data"
segundo el codigo php
Aclaracion: el codigo es una modificacion de dos codigos encontrados en este mismo foro, pero no recuerdo los usuarios, si alguien lo sabe q me envie un mensaje para poder darles credito.
Código PHP:
$foto = isset($_POST["file"])? $_POST["file"]: '';//verifica si se envio el archivo
//se configuran los parametros de subida
$folder = "docs/"; // Carpeta a la que queremos subir los archivos
$maxlimit = 50000000000; // Máximo límite de tamaño (en bits)
$allowed_ext = "rar,jpg,bmp,jpeg"; // Extensiones permitidas (usa una coma para separarlas)
$overwrite = "no"; // Permitir sobreescritura? (yes/no)
$match = "";
$filesize = $_FILES['file']['size']; // toma el tamaño del archivo
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$filename = "";
$error="";
//se le da un nombre aleatorio al archivo
for($i=0;$i<12;$i++)
{$filename .= substr($str,rand(0,62),1);}
if(!$filename || $filename=="") // mira si no se ha seleccionado ningún archivo
{$error = "- Ningún archivo selecccionado para subir.<br>";}
elseif(file_exists($folder.$filename) && $overwrite=="no")// comprueba si el archivo existe ya
{ $error = "- El archivo <b>$filename</b> ya existe<br>";}
// comprobar tamaño de archivo
if($filesize < 1) // el archivo está vacío
{$error .= "- Archivo vacío.<br>";}
elseif($filesize > $maxlimit) // el archivo supera el máximo
{$error .= "- Este archivo supera el máximo tamaño permitido.<br>";}
$sep=explode('image/',$_FILES["file"]["type"]);
$tipo=$sep[1];
if($tipo == "gif" || $tipo == "jpeg" || $tipo == "jpg" || $tipo == "bmp")
{$match = "1"; // Permite el archivo}
if(!$match)
{$error .= "- Este tipo de archivo no está permitido: $tipo<br>";}
if($error)
{print "Se ha producido el siguiente error al subir el archivo:<br> $error"; // muestra los errores}
else
{move_uploaded_file($_FILES['file']['tmp_name'], $folder.$filename.'.'.$tipo);}
Nota: es estrictamente necesario que el name del input en el q se guarda el archivo sea igual a parametro q toman las variables q manejan el archivo en este caso file
tercero guardarlo en la base de datos:
para q subirlo sino sabemos donde quedara, por eso lo guardaremos en la base de datos asi:
Código PHP:
$conexion = new mysqli("servidor","user","pass","base_datos");
if($conexion)
{
$insercion = "INSERT INTO tabla VALUES ('".$folder.$filename.".".$tipo."')";
$result = $conexion->query($insercion);
$row_cnt = $conexion->affected_rows;
if($row_cnt > 0)
{echo "archivo almacenado en la base de datos";}
else
{echo "archivo no almacenado";}
}
else
{echo "no hay conexion";}