ahora se me presentan dos problemas:
1_ que pasa si quiero subir mas de un archivo que debo agregarle?
2_ tengo un error por ejemplo si subo un archivo que supera el tamaño permitido y/o no es de la extension permitida me avisa (esto funciona bien) pero igual me lo graba en la base de datos como hago para que no lo haga?
aqui dejo los archivos
formulario.html
Código PHP:
<HTML>
<HEAD>
<TITLE>Binario a BD</TITLE>
</HEAD>
<BODY>
<?php
if (isset($_GET['proceso'])){
echo $_GET['proceso']."<br>";
}
?>
<FORM enctype="multipart/form-data" method="post" action="insertar.php">
Archivo: <INPUT type="file" name="archivo" size="30">
<INPUT type="submit" name="submit" value="Subir archivo">
</FORM>
</BODY>
</HTML>
Código PHP:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
if (empty($_FILES['archivo']['name'])){
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}
//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","..","..") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("imagen",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.
// archivo temporal (ruta y nombre).
$nombre_temporal=$_FILES['archivo']['tmp_name'] ;
// leer del archvio temporal...
$contenido = addslashes(fread(fopen($nombre_temporal, "rb"), filesize($nombre_temporal)));
// Obtener del array FILES (superglobal) los datos del archivo .. nombre, tabamo y tipo.
$nombre=$_FILES['archivo']['name'];
$peso=$_FILES['archivo']['size'];
$tipo=$_FILES['archivo']['type'];
//restringir tamaño de archivo permitido
$tamano = $_FILES [ 'archivo' ][ 'size' ]; // Leemos el tamaño del fichero
$tamaño_max="100000"; // Tamaño maximo permitido
if( $tamano < $tamaño_max){ // Comprovamos el tamaño
//guardar en carpeta
$destino = 'foto' ; // Carpeta donde se guardata
$sep=explode('image/',$_FILES["archivo"]["type"]); // Separamos image/
$tipo=$sep[1]; // Obtenemos el tipo de imagen que es
if($tipo == "gif" || $tipo == "jpeg" || $tipo == "bmp"){
//nombre aleatorio por formato de tiempo unix
$image_name=time().'.'.$tipo;
//copio al directorio especificado
move_uploaded_file ( $_FILES [ 'archivo' ][ 'tmp_name' ], $destino . '/' .$image_name.'.'.$tipo); // Subimos el archivo
}
else echo "el tipo de archivo no es una imagen permitida";// Si no es el tipo permitido lo decimos
}
else echo "El archivo supera el tamaño permitido.";// Si supera el tamaño de permitido lo decimos
//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO img (id, titulo, descrip, img1, img2) VALUES ('', '', '', 'foto/$image_name', '')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: listar_imagenes.php"); // si ha ido todo bien
exit;
?>