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???
| |||
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, |
| ||||
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! |
| |||
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, |
| ||||
¿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. |
| |||
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, |