Imágenes en php y mysql

Buenas, estoy probando guardar imágenes en mysql y no consigo verlas después en el navegador, utilizo windows y phpmyadmin, y me gustaría tener una base de datos con imágenes y poder mostrarlar después, no me interesaría tenerlas en el disco duro sino en la base de datos, gracias.

1 respuesta

Respuesta
1
¿Por qué no las quieres tener en el disco duro? Me gustaría que me lo comentases, porque creo que sería la mejor opción. Si subes imágenes de gran tamaño o incluso medio tamaño, vas a tener problemas casi seguro.
Para guardarlas en una base de datos puedes usar los siguientes scripts:
Formulario:
<form method="post" enctype="multipart/form-data">
<input type="text" name="nombre">
<input type="file" name="imagen">
<input type="submit" name="submit" value="Enviar">
</form>
INSERTAR LA IMAGEN EN LA BASE DE DATOS:
$id = mysql_connect("localhost","","");
mysql_select_db("Imagenes", $id);
$imagen = $_FILES['imagen']['tmp_name'];
$hImagen = fopen($imagen, "r");
$imagenBin = fread( $hImagen, filesize($imagen));
$imagenBin = addslashes( $imagenBin );
$nombre = $_POST["nombre"];
$resultado = mysql_query("INSERT INTO Imagenes (Nombre, Imagen) VALUES ('$nombre','$imagenBin')", $id);
mysql_close($id);
MOSTRAR LA IMAGEN:
<?php
$id = mysql_connect("localhost","","");
mysql_select_db("Imagenes", $id);
$resultado = mysql_query("SELECT Imagen FROM Imagenes WHERE Nombre = '$nombre'");
$imagenBin = mysql_result($resultado, 0);
$tipo = "image/jpeg";
header("Content-Type: $tipo");
echo $imagenBin;
?>
Lo puedes mejorar con las funciones de imágenes de php averiguando el tipo de imagen que es y almacenando ese dato en la base de datos. Al mostrar la imagen lo lees y pones el tipo correcto en la función header.
Gracias me ha servido, no quería guardarlas en el disco duro porque el servidor no lo tengo aquí, así que tenia que subir al servidor tanto las imágenes como la página, así que para agilizar tengo un programa que las sube y otro que las lista, es más sencillo de mantener

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas