Foros del Web » Programando para Internet » PHP »

Subir imágenes a mysql

Estas en el tema de Subir imágenes a mysql en el foro de PHP en Foros del Web. Hola, Quiero montar una página php que permita hacer cargas masivas de imágenes a base de datos. De momento he conseguido hacerlo subiendo un .zip ...
  #1 (permalink)  
Antiguo 31/08/2007, 07:06
 
Fecha de Ingreso: diciembre-2004
Mensajes: 19
Antigüedad: 19 años, 4 meses
Puntos: 0
Subir imágenes a mysql

Hola,

Quiero montar una página php que permita hacer cargas masivas de imágenes a base de datos.

De momento he conseguido hacerlo subiendo un .zip desde un formulario html con un <input type="file"...>. Desde el script php del action del formulario, saco las imágenes del zip y las meto en mysql, pero este método que a mi me parece cojonudo, no me permite gestionar bien las imágenes.

No puedo averiguar el tamaño de la imagen con la función getimagesize() de la librería gd ya que no la reconoce como una imagen, no se si porque lo estoy haciendo mal, o porque desde un zip esto no funciona.

¿Alguien ha tenido este problema? no se como tratar la imagen para que sea un objeto válido para el método del gd.

También se me había ocurrido la posibilidad de hacer una carga masiva de imagenes desde una carpeta del disco, pero todas las referencias que he encontrado en San google, hablan de cargas con un solo click y múltiples input file y eso no me interesa.

¿Alguien conoce alguna forma de subir ficheros a base de datos o servidor indicando únicamente la carpeta local donde residen esos ficheros?. He visto que la clase dir permite listar los ficheros de un directorio pero no se si puede subirlos al servidor.

Un saludo y gracias.
  #2 (permalink)  
Antiguo 31/08/2007, 07:41
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Subir imágenes a mysql

Podrias intentar solucionar este problema usando FTP.

Saludillos.
  #3 (permalink)  
Antiguo 31/08/2007, 07:59
Avatar de damian.adriel  
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Subir imágenes a mysql

Hola aqui te propongo una solucion, en el cual te permite guardar la imagen en una base de datos en Mysql.

Primeramente Crear una Tabla "upload_img" en la Base de datos MySql:

id (Int)
nombre (varchar)
tipo (varchar)
imagen (longblob)

Los demás campos estan a su consideracion.

El codigo para insertar desde un panel de administracion la imagen en la base de datos es el siguiente:

Se debe crear un formulario con el cual se pueda examinar el archivo en nuestra pc y ponerle de nombre ejemplo "archivo", si se define otro nombre debe ser cambiado en el codigo PHP.

Código PHP:
            if (is_uploaded_file($_FILES['archivo']['tmp_name']) === TRUE)
            {
                if (
$top == "1"){ $top_check3 "1"; }
                
$imagen mysql_escape_string(join(@file($_FILES['archivo']['tmp_name']))); 
                
$nombre mysql_escape_string($_POST['nombre']);
                
$tipo $_FILES['archivo']['type'];
                
$img = new consultaSql();
                
$img->query("INSERT INTO upload_img (nombre, tipo, imagen) VALUES('".$nombre."', '".$tipo."', '".$imagen."')");
            } 
Saludos
Damian.

Última edición por damian.adriel; 31/08/2007 a las 08:04
  #4 (permalink)  
Antiguo 31/08/2007, 08:02
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Subir imágenes a mysql

Creo que no radica aqui el problema, si no que esta buscando la forma de subir varias imagenes al servidor sin la necesidad de tener que insertar varios "input's" de tipo file. Por eso yo recomiendo que se conecte via ftp al servidor y
  #5 (permalink)  
Antiguo 31/08/2007, 08:02
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Subir imágenes a mysql

Creo que no radica aqui el problema, si no que esta buscando la forma de subir varias imagenes al servidor sin la necesidad de tener que insertar varios "input's" de tipo file. Por eso yo recomiendo que se conecte via ftp al servidor y de esta manera vaya mandado los archivos al server.

Saludillos.
  #6 (permalink)  
Antiguo 31/08/2007, 10:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 19
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Subir imágenes a mysql

Efectivamente ese es el tema, subir igual 100 imágenes al servidor y cargarlas directamente a una base de datos mysql.

La solución de los inputs no me motiva demasiado, ni siquiera la del gmail.

Lo del ftp no es mala idea, pero luego tengo que cargar todas las imágenes a la base de datos...

Os envío el php que uso para subir varias imágenes desde un input file empaquetadas en un zip:

<?php
require("gestionBD.php");
require("gestionHTTP.php");
require("gestionComunes.php");

$miConexion = new GestionBD;
$miPagina = new GestionHTTP;
$miComun = new GestionComunes;
$contador = 1;

$miConexion -> conectar ();
$miPagina -> cabecera ("estilos");
$miPagina -> titulo ("Resultado de la operación");
$miPagina -> meterSalto ("10");

$zip = zip_open($_FILES["fichero"]["tmp_name"]);
$catalogo = $_POST["catalogo"];

if ($zip) {
while ($zip_entry = zip_read($zip)) {
if (zip_entry_open($zip, $zip_entry, "r")) {
$nombre = zip_entry_name($zip_entry);

if ($miComun -> esImagen ($nombre)) {
$mime = $miComun -> obtenerMime ($nombre);
$imagen = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$imagen = addslashes($imagen);
$tamanio = zip_entry_filesize($zip_entry);
$propietario = "null";
$ancho = 1024;
$alto = 768;
$marcaTiempo = time() + $contador;
$contador = $contador + 1;
$clave = $marcaTiempo . $catalogo . $miComun -> eliminaEspacios ($nombre);

zip_entry_close($zip_entry);

$query = "INSERT INTO imagenes (clave,nombre,tamanio,imagen,propietario,ancho,alt o,catalogo,mime) VALUES ('" . $clave . "','" . $nombre . "','" . $tamanio . "','" . $imagen . "','" . $propietario . "','" . $ancho . "','" . $alto . "','" . $catalogo . "','" . $mime . "')";
$miConexion -> ejecutaSQL ($query);
if ($miConexion -> Errno == 0) {
$miPagina -> meterFila ("La imagen " . $nombre . " se ha insertado en la base de datos correctamente", "ok");
$miPagina -> meterSalto ("5");
}
} else {
$miPagina -> meterFila ("El fichero " . $nombre . " no se inserta en la base de datos ya que no corresponde a ninguno de los formatos de imagen soportados.", "error");
$miPagina -> meterSalto ("5");
}
}
}
} else {
$miPagina -> meterFila ("El fichero indicado no existe o está corrupto.", "error");
}

$miPagina -> piePagina ();
zip_close($zip);
$miConexion -> desconectar ();
  #7 (permalink)  
Antiguo 31/08/2007, 11:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Subir imágenes a mysql

mmm getimagesize require como parametro un string con el path al archivo, como tu estas leyendo directamente del zip estas mas bien pasando un recurso, asi que yo creo en lugar de usar getimagesize podrias usar imagecreatefromstring, y luego para obtener el ancho y alto usa imagesx y imagesy.

Saludos.
  #8 (permalink)  
Antiguo 31/08/2007, 18:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 19
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Subir imágenes a mysql

Eso es exáctamente lo que necesitaba!!!, muchas gracias. Además ahora puedo crear thumb´s de las fotos grandes para presentarlas más rápido, genial!!.
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 05:09.