entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Como guardar foto en BD con PHP?

La verdad suena como un tema que ya yo deberia conocer,pero estoy confundido.Tengo un codigo PHP que me permite subir las fotos,pero las manda a una carpeta.Pero mi intencion es mandarla al campo "Fotos"de la tabla "usuarios" del usuario que esta logueado,eso lo hago desde el perfil del usuario logueado.Me gustaria saber que partes de este codigo cambiar para hacerlo funcionar de la forma que quiero.

Solo les voy a presentar el codigo PHP.

     <?php

     include ('conexion.php');

     if (isset($_FILES["file"]))

     {

      $file = $_FILES["file"];

      $nombre = $file["name"];

      $tipo = $file["type"];

      $ruta_provisional = $file["tmp_name"];

      $size = $file["size"];

      $dimensiones = getimagesize($ruta_provisional);

     $width = $dimensiones[0];

       $height = $dimensiones[1];
      $carpeta = "imagenes/";

      if ($tipo != 'image/jpg' && $tipo != 'image/jpeg' && $tipo != 'image/png' && $tipo != 'image/gif')

      {

      echo "Error, el archivo no es una imagen";

      }

      else if ($size > 1024*1024)

       {

        echo "Error, el tamaño máximo permitido es un 1MB";

      }

      else if ($width > 1024 || $height > 900)

      {

        echo "Error la anchura y la altura maxima permitida es 900px";

      }

       else if($width < 60 || $height < 60)

       {

        echo "Error la anchura y la altura mínima permitida es 60px";

      }

      else

       {

        $src = $carpeta.$nombre;

        move_uploaded_file($ruta_provisional, $src);

        echo "<img src='$src'>";

         }

          }

?>

1 Respuesta

3votos

Leonardo-Tadei Puntos227010

Hola @luis2016,

supongo que esto está relacionado con tu pregunta anterior... en realidad, no importa en qué tipo de DB guardes la imagen, la mecánica es la misma: leer el archivo, cargarlo a unn campo BINARY del tamaño suficiente, y guardar el tipo del archivo para poder volver a generarla.

En este enlace hay código que lo implementa. Es uno de los tantos que aparecen.

Vos en vez de leer el archivo de una ubicación conocida, lo vas a leer de tu variable $ruta_provisional

El tipo de archivo hace falta para poder devolver la imagen más tarde; a veces se guarda también el nombre original para devolverlo igual que como fue subido. El script que regenere la imagen será el atributo SRC de un IMG:

<img src="generar_imagen.php?id=<?php print($el_id_del_registro)?>" />

Saludos cordiales!

PD: asumo que tendrás tus motivos para guardar la imagen en la DB. En general, en la DB se guarda solo la ruta en donde se deja el archivo subido, para poder encontrarlo luego.

1voto

luis2016 comentado

Amigo no entendí tu explicación.he leído que se guarda la ruta en BD,pero como es que se hace?quiero saber como insertar la imagen en la tabla del usuario logueado.es desde una ventana modal,ya implemente recoger el id del usuario y enviarlo a la modal,pero ahí es que viene el problema.acaso con una sentencia sql no se hace?

2votos

Leonardo-Tadei comentado

Hola @luis2016,

no hagas caso a mi posdata si querés guardar la imagen dentro de la DB.

Para saber como se hce para insertar la imagen, leé por favor el artíuclo en el enlace que pongo en mi respuesta.

Luego de leerlo, no dudes en consultar si hay algo que no entendés!

1voto

luis2016 comentado

Ya leí todo.

Que significa la "r" dentro de:

 $fp = fopen ($archivo, 'r');

pero claro,entendi algo.

Ademas de eso,no veo la necesidad de tener un campo llamado "tipo"(no lo busco).

2votos

carlossevi comentado

Para dudas sobre los parámetros o funcionamiento de las funciones te recomiendo acudir a la documentación que en el caso de PHP es muy clara: http://php.net/manual/es/function.fopen.php

'r': Apertura para sólo lectura; coloca el puntero al fichero al principio del fichero.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta