Estoy usando el sistema para guardar las imagenes en la base de datos que nos enseño cluster :
http://www.forosdelweb.com/f18/tutorial-ejemplo-subir-archivos-bd-guardando-bd-binario-127775/
Yo en particular tengo un formulario para saber otros datos ademas de la imagen a subir.. me funciona todo.. solo que no logro validar el tipo de archivo y tamaño a subir del archivo, yo solo necesito que se suban fotos a la base de datos por ejemplo .jpg, .gif, .png y un tamaño maximo de 300 kb.
Este es el formulario:
Código PHP:
<FORM name="add" enctype="multipart/form-data" method="post" action="insertar.php">
<table width="613" border="0" align="center">
<tr>
<td width="123" valign="top"><div align="left">Titulo*</div></td>
<td width="480"><INPUT name="titulo" type="text" id="titulo" value="" size="80" />
</div></td>
</tr>
<tr>
<td valign="top"><div align="left">Descripcion*</div></td>
<td><textarea name="descripcion" cols="61" rows="10" id="descripcion"></textarea></td>
</tr>
<tr>
<td valign="top"><div align="left">Tags*</div></td>
<td><INPUT name="tag" type="text" id="tag" value="" size="80" /></td>
</tr>
<tr>
<td valign="top"><div align="left">Categoria*</div></td>
<td><label>
<select name="categoria" id="categoria">
<?php do { ?>
<option value="<?php echo $row_categorias['categoria']; ?>"><?php echo ucfirst($row_categorias['categoria']); ?></option>
<?php } while ($row_categorias = mysql_fetch_assoc($categorias)); ?>
</select>
</label></td>
</tr>
<tr>
<td valign="top"><div align="left">Formas de contacto</div></td>
<td><textarea name="forma_contacto" cols="61" rows="3"></textarea></td>
</tr>
<tr>
<td valign="top"><div align="left">Url</div></td>
<td><INPUT type="text" name="url" value="" size="50" /></td>
</tr>
<tr>
<td valign="top"><div align="left">Pais*</div></td>
<td>
<?php generaPaises(); ?>
</td>
</tr>
<tr>
<td valign="top"><div align="left">Estado*</div></td>
<td><select disabled="disabled" name="estados" id="estados">
<option value="0">Selecciona opción...</option>
</select></td>
</tr>
<tr>
<td valign="top"><div align="left">Ciudad</div></td>
<td><INPUT name="ciudad" type="text" id="ciudad" size="32"></td>
</tr>
<tr>
<td valign="top"><div align="left">Foto</div></td>
<td><INPUT type="file" name="archivo" size="50"></td>
</tr>
<tr>
<td valign="top"><div align="left">Email</div></td>
<td><INPUT name="email" type="text" id="email" value="" size="50" /></td>
</tr>
<tr>
<td valign="top"><div align="left">ok</div></td>
<td><INPUT type="button" name="button" value="Anunciar" onclick="valida_envia()"></td>
</tr>
</table>
</FORM>
insertar.php
(Con este se logra saber los datos del archivo a subir para guardar el archivo en la base de datos)
Código PHP:
<?php
//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","admin","1234") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("anuncio",$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).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];
//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo, titulo, descripcion, tag, categoria, email, forma_contacto, url, pais, estado, ciudad) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo', '{$_POST['titulo']}', '{$_POST['descripcion']}', '{$_POST['tag']}', '{$_POST['categoria']}', '{$_POST['email']}', '{$_POST['forma_contacto']}', '{$_POST['url']}', '{$_POST['pais']}', '{$_POST['estados']}', '{$_POST['ciudad']}')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: formulario.php"); // si ha ido todo bien
exit;
?>
El tema es que yo estoy validando todos los otros datos del formulario del lado del cliente no del servidor y la verdad estoy bastante confundida.. por que busque por todos lados hace ya varios dias y no encuentro nada que me sirva..
Se puede llegar a validar el tipo de formato y peso de la imagen a subir a la base de datos.. pero del lado del usuario utilizando este sistema ???
Es que no se mucho de php.. estoy empezando.
Bueno saludos y gracias por tenerme paciencia jeje