Foros del Web » Programando para Internet » PHP »

Como guardo una imagen en la BD en Mysql??

Estas en el tema de Como guardo una imagen en la BD en Mysql?? en el foro de PHP en Foros del Web. Como hago para subir una imagen y guardarla en la BD, para empezar que tipo de dato elijo para la columno, muchos me han dicho ...
  #1 (permalink)  
Antiguo 08/02/2003, 19:16
Avatar de fjescalant  
Fecha de Ingreso: abril-2002
Ubicación: Villahermosa
Mensajes: 54
Antigüedad: 22 años
Puntos: 0
Como guardo una imagen en la BD en Mysql??

Como hago para subir una imagen y guardarla en la BD, para empezar que tipo de dato elijo para la columno, muchos me han dicho que BLOB pero ese formato es para texto según lei.
Que hago???
  #2 (permalink)  
Antiguo 08/02/2003, 19:27
Avatar de lochorui  
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 899
Antigüedad: 22 años, 2 meses
Puntos: 2
es recomendable que guardes la imagen en un directorio y simplemente en la bd insertees el enlace a sdicha imagen , mira en las faqs de estos mismos foros que hay ejemplos , un saludo
  #3 (permalink)  
Antiguo 08/02/2003, 19:30
Avatar de fjescalant  
Fecha de Ingreso: abril-2002
Ubicación: Villahermosa
Mensajes: 54
Antigüedad: 22 años
Puntos: 0
Gracias por la respuesta, tengo otra duda, se puede meter un archivo a la base de datos o la solucion es hacerlo como lo de las imagenes que me recomendaste.
  #4 (permalink)  
Antiguo 08/02/2003, 19:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Teoría concreta de BLOD no tengo (preguna en el foro de Base de datos para q te orienten ..) Pero si es cierto q se alguna manera se codifican los datos q lees de tu servidor (tu archivo binario) para ingresarlo en un campo BLOD ... (digo del servidor .. pues el proceso no se hace "directo" .. 1º se sube el archivo al servidor ..y 2º se vuelca desde donde esté en el servidor hacia el campo BLOD de tu BD...)

Aquí tienes un tutorial al respecto:
http://www.devarticles.com/art/1/68

Te recomiendo que tengas en cuenta q adminstrar archivos via tu Msyql bajaa el rendimiendo de tu Base de datos considerablemente .. Lo que se suele hacer (sobre todo si los archivos son grandes) es simplemente guardarte el URL donde esté fisicamente el archivo en tu servidor en un campo de tu base de datos para usarlo en tus scripts de descargas ..

Sobre esto último q te comento:
http://www.devshed.com/Server_Side/PHP/User/page1.html
(solo hay un detalle .. usa exec() para copiar el archivo subido desde el temporal donde PHP guarda lo q se sube al servidor hasta su destino definitivo .. en tal caso usa move_uploaded_file() ...)

Revisa tambien:
http://www.php.net/manual/en/features.file-upload.php

Es la parte en comun de ambos métodos .. El hecho de subir tu archivo desde el cliente .. al servidor. Una vez en el servidor .. tu decides donde lo guardas o como lo administras..

Un saludo,
  #5 (permalink)  
Antiguo 08/02/2003, 19:46
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 22 años
Puntos: 2
Na, na,, no te recomiendo que la imagen la subas al directorio..

>>es mejor en la BD,, mete estos campos a tu tabla:

imagen LONGBLOB,
filetype CHAR(50),

>>luego el formulario es el sig:

<form name="form1" method="post" action="sending.php" enctype="multipart/form-data">
<input type="file" name="form_data">
<input type="submit" name="Enviar" value="Enviar"></form>

>>el sending.php,, a donde se dirige el formulario:

$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

>>metes en la BD en el campo imagen: $data y el campo filetype: $form_data_type

>>luego para obtener dichas imagenes:

if($id) {

$hazquery = "select imagen,filetype from TABLA where id LIKE '$id'";
$resultexe = @MYSQL_QUERY($hazquery);

$data = @MYSQL_RESULT($resultexe,0,"imagen");
$type = @MYSQL_RESULT($resultexe,0,"filetype");

Header( "Content-type: $type");
echo $data;

};

>>ese archivo lo guardas (ej: imagen.php) y obtienes cada imagen con::

<img src=\"imagen.php?id=".$row[id]."\">

Listo

This is all folks!
  #6 (permalink)  
Antiguo 08/02/2003, 20:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Camargo ..

Cuando veas q Mysql tarda mas de la cuenta en ejecutar tus consultas ya veras lo q te digo ..

Si son 4 imagenes y de poco peso . OK .. En la BD a la hora de hacer copias de seguridad te lo haces con todo (incluidos las imagenes ..)

Comprueba lo q tarda en ejecutarse una consulta a tu BD con campos BLOD y solo guardando referencias de la ubicación ..de la imagen.

(temas de seguridad de las imagenes o archivos no es escusa para meterlos en la BD . pues siempre puedes dejarlos fuera de tu document_root y se acabó el problema de posibles "links" directos a las imagenes .. siempre las entregas con tus cabeceras HTTP ..)

Un saludo,
  #7 (permalink)  
Antiguo 10/02/2003, 10:43
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
¿Y si se tiene un formulario para subir imagenes?

Hola yo tenia la misma duda, leyendo este post me ha quedado claro cierta parte, pero que pasa si se tiene varios colaboradores, y ellos quieren subir fotos de las notas que publican, ¿A donde se deben de enviar esas imagenes? o tal vez la pregunta sería ¿Como hacerlo sin que el administrador del sitio se vea en el proceso de subir las imagenes que le manden via mail, a una carpeta determinada?

No se si me explique pero sería mejor que los mismo reporteros envien sus imagenes y estas sean ubicadas automáticamente.

¿Esto va a una BD o se ubica en una carpeta?
¿se llama solo el path desde la BD?

Gracias.
  #8 (permalink)  
Antiguo 10/02/2003, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
kawop ...

Si sigues los links q se han dado y las explicaciones de cada uno de estos mensajes .. veras q hay DOS formas de subir un binario a tu servidor (se una imagen o un ejecutable) ..

(repito)
1) Subir la imagen completa a tu Base de datos en formato binario .. se guardan en un campo mas de tu base de datos (tipo BLOD o similar para mas señas).

2) SOLO guardar el paht hacia la imagen .. A su vez en el proceso de "upload" tu programación decidirá a que destino final se ubicaran ...

El problema q tienes de "organizacion" tan solo depende de TI:

- Si subes tus imagenes y las guardas en un directorio (paht) de tu servidor .. en el proceso de "upload" tienes que hacer un "movimiento". El archivo q se hace "upload" PHP lo guarda en un directoro temporal habilitado para tal fin .. en ese instante (con el nombre del archivo recien subido y mas datos q puedes obtener del mismo) lo mueves/copias a su destino final .. Eso lo puedes hacer via move_uploaded_file(origen,destino) .. Así q con esto tan solo te quedaría en tu sistema "multiusuario" decidir que usuario está activo (usando ese "uploader") y encaminar la copia del archivo hacia el directorio asignado para el usuario ...

- Si lo guardas en tu BD ya queda asociado al registro donde lo guardes .. Para eso igual q antes .. ya tendras tu modelo de datos de tu BD q decidas las relaciones entre los archivos q tienes en tu BD y a quien pertenecen (esto le llaman normalización, claves foraneas . etc ..)

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:46.