Foros del Web » Programando para Internet » PHP »

Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP

Estas en el tema de Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP en el foro de PHP en Foros del Web. Hola a todos: Tengo una aplicación web que guarda registros de personas, y que me permite subir una foto por registro, misma que copio al ...
  #1 (permalink)  
Antiguo 15/10/2007, 19:01
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años, 7 meses
Puntos: 9
Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP

Hola a todos:

Tengo una aplicación web que guarda registros de personas, y que me permite subir una foto por registro, misma que copio al Servidor, y en la base de datos sólo guardo la URL a la imagen. Esto para no tener una base de datos que pese horrores.

Por otro lado, al cliente se le ocurrió imprimir credenciales con fotografía de todos los que están ahí registrados, y además, he de usar una aplicacón llamada DataCard ID Works.

El caso es que la susodica aplicación ID Works normalmente funciona con Access y familia (ya logré con ODBC que funcione con MySQL), pero aparentemente no puedo ponerle un campo con un URL absoluto para que lo use como imagen, así que tengo que guardar todas las imágenes en una tabla auxiliar en tipo de dato Blob (supongo).

Por tanto, mis preguntas en concreto son dos:
  1. ¿Cómo puedo hacer un Script PHP que al ejecutarlo lea cada imagen, la convierta en binario (o lo que sea que vaya en un Blob) y la inserte en otra tabla?
  2. ¿Si guardo una imagen en un Blob de MySQL es lo mismo que tenerla como Objeto OLE en Access?
Sé que es una pregunta como para el foro de MySQL, pero también tiene que ver con PHP, así que decidí publicarla aquí.

Estoy usando un servidor web Apache con PHP 4.3 y MySQL 4.1.22, por si acaso tuviera algo qué ver.

Saludos y gracias.
  #2 (permalink)  
Antiguo 15/10/2007, 20:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP

Pues los pasos serian:
1.- Seleccionas todos tus registros
2.- Por cada registro lees si tiene una foto
3.- En caso de que la tenga la lees con fopen, o file_get_contents
4.- Haces un UPDATE a tu tabla y agregas el campo tipo Blob
5.- Te mueves al siguiente registro.

Saludos.
  #3 (permalink)  
Antiguo 16/10/2007, 15:34
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años, 7 meses
Puntos: 9
Re: Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP

Hola GatorV.

El problema lo tendría en el paso 3, porque no sé mucho de manejo de archivos con PHP. Todo lo demás lo puedo resolver.
¿Cómo sería, asignando a una variable el resultado del file_get_content, por ejemplo, y luego ese valor lo inserto al campo Blob?
¿Cómo lo leería después?
¿El Blob equivale al objeto OLE en Access?

Saludos y gracias.
  #4 (permalink)  
Antiguo 16/10/2007, 15:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP

Es sencillo por decir:
Código PHP:
$imagen "/path/a/mis/imagenes/imagen01.jpg";
$imagen_bin addslashesfile_get_contents$imagen ) );

$query "UPDATE `tabla` SET `imagen`='$imagen_bin' WHERE `idImagen`=$id LIMIT 1"
Si el objeto Blob es un equivalente a un objeto OLE.

Saludos.
  #5 (permalink)  
Antiguo 17/10/2007, 12:21
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años, 7 meses
Puntos: 9
Re: Insertar muchas imágenes como Blob a una tabla de MySQL usando PHP

¡Escelente GatorV!
Sumamente agradecido.

Todo jaló sin problemas.
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 12:17.