Hola,
Lo que yo hago es crear una tabla que contenga al menos estos 4 campos:
filename varchar(120) NOT NULL
filetype varchar(120) NOT NULL
filesize varchar(5) NOT NULL
filedata longblob NOT NULL
Si pones un formulario que te permita subir las fotos, deberás añadirle esta propiedad en la etiqueta <form>:
enctype="multipart/form-data"luego para añadir un campo en el formulario que te permita adjuntar la foto debe ser de tipo file:
<input type="file" name="foto" size=20>Ok, cuando proceses los datos en tu script deberías hacer algo como esto:
// Compruebas que se ha subido un archivo
if(strcmp($foto, "none") && $foto != "") {
$filetype = $foto_type;
// Compruebas que se trata de una foto
if (!strcmp($filetype, "image/gif") || !strcmp($filetype, "image/jpeg") ||
!strcmp($filetype, "image/pjpeg") || !strcmp($filetype, "image/x-png")) {
$filename = $foto_name;
$filesize = $foto_size;
$filedata = addslashes(fread(fopen($foto, "r"), filesize($foto)));
// Y a continuación insertarías los datos en la tabla normalmente...
}
}
Para mostrar las fotos, crea un script llamado
fotos.php que reciba un parametro. Lo mejor sería tener un único ID para cada foto y pasarle ese parámetro al script.
Entonces lo que harías para mostrar la foto en una página sería esto:
<img src="fotos.php?id=1">y te mostraría la foto con ID igual a 1.
Lo que debes hacer en el script fotos.php es, en primer lugar, obtener el registro con ID = 1 de la tabla de las fotos.
Una vez tengas el registro (llamémosle
$reg para este ejemplo) harías lo siguiente:
$file = mysql_fetch_array($reg);
header("Content-disposition: filename=$file[filename]");
header("Content-Length: ".strlen($file[filedata]));
header("Content-type: $file[filetype]");
header("Pragma: no-cache");
header("Expires: 0");
echo $file[filedata];
Haciendo todo esto debería estar completo todo el proceso para subir/guardar/mostrar fotos usando bases de datos.
Espero que te sirva.
Salu2,
Avalon