Hola, Estoy tratando de subir una imagen a la base de datos MySQL de mi sitio y no se como hacerlo. Cree un formulario en DreamW que supuestamente me permite hacerlo pero sin embargo, no se como buscar el archivo JPG en mi PC y guardarlo al campo "IMAGEN" en la base de datos del servidor. En otras palabras, necesito examinar mis carpetas desde la página para seleccionar el archivo JPG, y luego añadirlo al campo IMAGEN de la tabla correspondiente. NOta: (el campo IMAGEN es del tipo BLOB)
Agradecería cualquier ayudita. Gracias.
Para examinar tu ordenador en busca de la imagen debes poner un input de tipo "file", con ello aparece el típico botón examinar. De todas formas subir una imagen a una base de datos como datos binarios no es tan fácil como parece. A continuación te pongo un código que te puede servir: Este código es el del script en el que introducimos la imagen y otros datos: ---- guardar.php ----- <?php //////////////////// //A T E N C I Ó N // //////////////////// //Este script da errores al grabar los datos binarios y por tanto al visualizar las imágenes si se ejecuta //en local en el so Windows. Funciona perfectamente en un servidor UNIX. // Este script muestra como guardar archivos binarios (imágenes, documentos de word) en una // base de datos Mysql ?> <HTML> <HEAD> <TITLE>Guardando datos binarios en una base de datos MySQL</TITLE> <link href="upload.css" rel="stylesheet" type="text/css"> </HEAD> <BODY> <?php // Este es el código que se ejecutará si el formulario se envia if ($submit) { // conexión a la base de datos Mysql_connect("localhost","root",""); //servidor, usuario y contraseña mysql_select_db("imagenbd"); //nombre de la base de datos /* addslashes: Escapa mediante una barra invertida los caracteres especiales que necesitan marcarse en consultas de bases de datos, etc. Estos son la comilla simple ('), comilla doble ("), barra invertida (\) y NUL (el byte nulo). Fread: Se encarga de leer un determinado número de bytes de un fichero y devolverlos en una cadena de caracteres. La sintaxis de la función es fread(int fichero, int numero de bytes). Filesize: Determina el tamaño de un fichero en bytes. "r": Fichero de solo lectura. */ $datos = addslashes(fread(fopen($datosFormulario, "rb"), filesize($datosFormulario))); echo $datos; echo "<br><img src=\"$datos\"><br>"; echo $datosFormulario."<br>"; echo $datosFormulario_name."<br>"; echo filesize($datosFormulario)."<br>"; //Introducimos en la tabla --datosbinarios-- los datos que provienen del formulario $resultado=MYSQL_QUERY("INSERT INTO datosbinarios (descripcion,datosbinarios,nombre,tamano,tipo) ". "VALUES ('$descripcion','$datos','$datosFormulario_name','$datosFormulario_size', '$datosFormulario_type')"); /* Mysql_insert_id(cursor) devuelve el valor generado para un atributo de tipo AUTO_INCREMENT (en este caso el campo id de la tabla datosbinarios) en el último INSERT. */ $id= mysql_insert_id(); print "<p>Este archivo tiene el siguiente ID: <b>$id</b>"; //cerramos la base de datos mysql_close(); } else { // formulario ?> <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data"> Descripción del archivo:<br> <input type="text" name="descripcion" size="40"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000"> <br>Archivo para cargar en la BD:<br> <input type="file" name="datosFormulario" size="40"> <p><input type="submit" name="submit" value="Cargar"> </form> <?php } ?> <p><br> <a href="mostrarfotos.php">Mostrar todas las fotos </a></p> </BODY> </HTML> -------------------------------- Y el siguiente script es el que recoge los datos: ---mostrarfotos.php ---- <?php if($id) { // Datos de conexión a la bas