sql >> Base de Datos >  >> RDS >> Mysql

Cargue la imagen en la base de datos MYSQL y muéstrela usando PHP con Swift

Obtener la imagen del usuario

Consulte http://php.net/manual/en/reserved.variables. archivos.php y http://php.net/manual/en/features.file- subir.php y amigos por los detalles de cómo usar $_FILES para recibir lo subido.

Una vez que tenga la imagen en una variable, diga $jpg , no utilice ninguna función de codificación/descodificación de texto; solo destrozará las cosas. Los diferentes enfoques a continuación le dirán qué hacer para evitar tropezar con códigos de 8 bits.

Hay tres formas de presentar la imagen, cada una es algo compleja

Almacenamiento de la imagen en la base de datos; mostrando imagen en línea

He usado este enfoque para miniaturas, pero no lo recomiendo para imágenes grandes.

Guárdelo en un MEDIUMBLOB en una tabla, use bin2hex() en PHP para convertir la imagen en una cadena. Luego use INSERT ... VALUES (UNHEX('...')) para volver a binario en el lado del servidor MySQL.

Después de recargar, haga que el PHP de referencia diga algo como

$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";

Almacenamiento de la imagen en la base de datos; Script PHP para generar imagen

Lo uso cuando quiero usar las funciones de "imagen*" de PHP para modificar la imagen antes de mostrarla. Dado que esto es más complicado de lo que probablemente necesite, solo revisaré brevemente lo que se necesita hacer.

El html de la página invocaría otro script, con los argumentos que necesite:

<img src=modify.php?this=stuff&that=stuff>

Luego en modify.php , comienza con

header('Content-type: image/jpeg');

Y termina con esto (asumiendo que estás construyendo un JPEG):

imagejpeg($im);

Almacenamiento de la imagen en un archivo

Esta es la forma preferida en que la mayoría de los grandes sitios web lo hacen la mayor parte del tiempo.

Si su archivo proviene de una carga, algo como esto lo mueve a una ruta mejor sin tener que tocar el jpg.

$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);

Más información y ejemplos:http://php.net/manual/ es/funcion.mover-archivo-cargado.php

En el HTML, simplemente genera algo como esto:

<img src=path/to/file>

Investigue un poco sobre en qué parte de la ruta de su servidor puede colocar imágenes y asegúrese de que los permisos sean adecuados.

Nota:la base de datos no está involucrada en el mantenimiento de la imagen, sino que tiene una columna para almacenar la url "path/to/file" :

image VARCHAR(255) NOT NULL

Para mayor discusión

  • ¿En cuál de las 3 técnicas te gustaría profundizar más?
  • Veamos el código HTML que está generando.
  • Veamos SHOW CREATE TABLE .