Guardar una imagen y su miniatura a un campo Blob de mysql
Por: braulio | 4 Diciembre 2004 | Ver comentarios |
Leyendo distintos foros de PHP, me encontré con uno en el que ofrecían dinero por hacer un script que subiendo una foto mediante un formulario HTML, se guarde esta en un campo BLOB de mysql, y su miniatura en otro campo BLOB, y que al final del script no deberían quedar ni la foto ni la miniatura en el servidor, solamente en la base de datos mysql.
Pues como que me picó el bicho y me animé a hacerlo, y aquí les publico el script para que lo usen si es que lo necesitan.
¿Qué necesitamos?
Para crear la miniatura necesitamos la Librería Gráfica GD, en este script estamos usando la versión 2.0.28 de esta librería.
Si esta librería está activada, en el phpinfo() debe salir algo como esto:
Si no la tenemos activada solo tenemos que modificar el archivo php.ini que se encuentra en C:\Windows (puede variar según tu versión de Windows), y agregar la línea extension=php_gd2.dll en la sección "Dynamic Extensions". El archivo php_gd2.dll debe estar en la carpeta "extensions" dentro del directorio donde instalaste el php, por ejemplo "C:\php\extensions". Si no tienes el archivo php_gd2.dll, te lo puedes descargar aquí.
Desarrollo del Script
El formulario de upload y el script php está en una sola página, la nombré como blob.php, empezemos entonces:
<?php
// Verificamos que el formulario no ha sido enviado aun
$postback = (isset($_POST["enviar"])) ? true : false;
if($postback){
// Nivel de errores
error_reporting(E_ALL);
// Constantes
# Altura de el thumbnail en píxeles
define("ALTURA", 100);
# Nombre del archivo temporal del thumbnail
define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
// define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
# Servidor de base de datos
define("DBHOST", "localhost");
# nombre de la base de datos
define("DBNAME", "test");
# Usuario de base de datos
define("DBUSER", "root");
# Password de base de datos
define("DBPASSWORD", "");
// Mime types permitidos
$mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
// Variables de la foto
$name = $_FILES["foto"]["name"];
$type = $_FILES["foto"]["type"];
$tmp_name = $_FILES["foto"]["tmp_name"];
$size = $_FILES["foto"]["size"];
// Verificamos si el archivo es una imagen válida
if(!in_array($type, $mimetypes))
die("El archivo que subiste no es una imagen válida");
// Creando el thumbnail
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
$img = imagecreatefromjpeg($tmp_name);
break;
case $mimetypes[2]:
$img = imagecreatefromgif($tmp_name);
break;
case $mimetypes[3]:
$img = imagecreatefrompng($tmp_name);
break;
}
$datos = getimagesize($tmp_name);
$ratio = ($datos[1]/ALTURA);
$ancho = round($datos[0]/$ratio);
$thumb = imagecreatetruecolor($ancho, ALTURA);
imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($thumb, NAMETHUMB);
break;
case $mimetypes[2]:
imagegif($thumb, NAMETHUMB);
break;
case $mimetypes[3]:
imagepng($thumb, NAMETHUMB);
break;
}
// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen($tmp_name, "rb");
$tfoto = fread($fp, filesize($tmp_name));
$tfoto = addslashes($tfoto);
fclose($fp);
# contenido del thumbnail
$fp = fopen(NAMETHUMB, "rb");
$tthumb = fread($fp, filesize(NAMETHUMB));
$tthumb = addslashes($tthumb);
fclose($fp);
// Borra archivos temporales si es que existen
@unlink($tmp_name);
@unlink(NAMETHUMB);
// Guardamos todo en la base de datos
#nombre de la foto
$nombre = $_POST["nombre"];
$link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
mysql_select_db(DBNAME, $link) or die(mysql_error($link));
$sql = "INSERT INTO tabla(nombre, foto, thumb, mime)
VALUES
('$nombre', '$tfoto', '$tthumb', '$type')";
mysql_query($sql, $link) or die(mysql_error($link));
echo "Fotos guardadas";
exit();
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Imagen a Blob</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form name="frmimage" id="frmimage" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> Nombre: <input type="text" id="nombre" name="nombre" /><br /> Imagen: <input type="file" id="foto" name="foto" /><br /> <input type="submit" name="enviar" id="enviar" value="Guardar" /> </form> </body> </html>
Las primeras líneas controlan que el formulario aun no se ha enviado, despues definimos constantes para guardar los archivos en nuestra base de datos, solo las cambiamos según nos convenga.
Despues verificamos si el archivo que subimos es una imagen para esto verificamos su tipo MIME. Los tipos que se permiten en este script son "image/jpeg" , "image/gif" e "image/png". Caso contrario recibiremos el mensaje "El archivo que subimos no es una imagen válida".
Según el tipo MIME de la imagen, crearemos la miniatura con las funciones imagecreatefromjpeg(), imagecreatefromgif() o imagecreatefrompng().
La función imagecopyresized() crea la miniatura de la imagen, aunque también podemos utilizar imagecopyresampled().
Y aquí el script que utilizé para la tabla:
CREATE TABLE `tabla` ( `idfoto` int(3) NOT NULL auto_increment, `nombre` varchar(255) NOT NULL default '', `foto` blob NOT NULL, `thumb` blob NOT NULL, `mime` varchar(40) NOT NULL default '', PRIMARY KEY (`idfoto`) ) ;
Ustedes ya le agregan los campos que necesiten.
Actualización
Dado que el soporte GIF fue retirado por completo de la biblioteca GD en la versión 1.6, la función imagegif no se encuentra disponible si está usando tal versión de la biblioteca GD. Se espera que el soporte para esta característica regrese en una versión posterior al relanzamiento del soporte GIF en la biblioteca GD a mediados de 2004. Para más información, consulte el sitio web del Proyecto GD.
Para que nuestro script funcione corréctamente la carpeta que lo contiene debe tener permisos de escritura, la mayoría de hostings que ofrecen PHP tienen los archivos bajo la carpeta public_html, no se sugiere correr este script bajo la carpeta raiz, ya que si damos permisos de escritura a public_html otros usuarios pueden acceder y modificar nuestros archivos. La sugerencia es correr el script bajo una carpeta cualquiera diferente de la raiz, por ejemplo /thumbs/blob.php, asi no tendremos problemas de seguridad.
Actualización 2
Agregué al script en el arreglo de mimes el tipo “image/pjpeg” para que no haya problemas al subirlo, también a sugerencia de mi master Alex cambié la ruta de la NAMETHUMB, para que se guarde en la carpeta temporal del SO en el que se ejecuta. Si es windows entonces c:\Windows\Temp\ y si es linux /tmp/, etc.
Enlaces
Autor
Braulio Andrés Soncco Pimentel
Programador - Diseñador
braulio at buayacorp.com
valois
10 de Diciembre de 2004, 01:25:54 pm
Andrés me parece que lo estan pidiendo que el thumbail de la imagen lo manejes en memoria no en un archivo temporal fijate donde dice “no se puede guardar en una carpeta en el servidor, solo en un campo BLOB”. Si me equivoco perdon, pero me parece que no es lo que se pedía
Braulio
10 de Diciembre de 2004, 04:29:33 pm
Al final del Script, no queda ni un archivo en el servidor, solo en la base de datos.
titote
14 de Diciembre de 2004, 05:47:41 pm
Que va en “Nombre del archivo temporal del thumbnail”?
Braulio
31 de Diciembre de 2004, 02:08:28 pm
Es un nombre cualquiera, es el nombre del archivo que se guardará temporalmente antes de añadirlo a la base de datos.
sanjavi
7 de Enero de 2005, 04:05:33 am
Esta muy bien, pero es que soy nuevo y estoy aprendiendo, y no se como hacer la tabal de la base de datos, osea los parametros de nombre, foto, tumbs, mime. Si alguien puede ayudarme, se lo agradezco.
Saludos.
Braulio
7 de Enero de 2005, 11:06:50 am
El Script de la tabla es este. Si tienes más dudas escríbeme braulio @ buayacorp.com
CREATE TABLE `tabla` (
`idfoto` int(3) NOT NULL auto_increment,
`nombre` varchar(255) NOT NULL default '',
`foto` blob NOT NULL,
`thumb` blob NOT NULL,
`mime` varchar(40) NOT NULL default '',
PRIMARY KEY (`idfoto`)
) ;
titote
13 de Enero de 2005, 01:21:43 pm
me da error:
Warning: imagejpeg(): Unable to open ‘thumbtemp’ for writing in /sitios/m1547/discocompartido.com.ar/public_html/test.php on line 59
Pablo
14 de Enero de 2005, 10:23:41 am
Hola soy nuevo en php y mysql y queria saber ya que por lo que veo la tienen bastante clara es si alguno sabe algun buen manual en castellano sobre mysql me salta un error default-character-set=latin1 y ya no se donde buscar la solucion. Mil perdones ya que no tiene que ver con el tema.
luisterio
14 de Enero de 2005, 10:37:13 pm
buena buena….. buena idea… ahora la voy a ocupar… grax
lagardel
21 de Enero de 2005, 09:59:56 am
muy bueno el script muy bien pensado
hartman
16 de Febrero de 2005, 07:32:44 am
primero gracias por el curro, pero lo he probado y no introduce nada en la tabla, y tampoco da ningún error. El script está listo para usar?
gracias
Braulio
16 de Febrero de 2005, 07:18:49 pm
Si, el script está listo para usar, estás seguro que no produce ningún error?, haz creado la tabla según el script?,
revisa bien. Copia el código tal como está. Asegúrate de que la línea error_reporting(E_ALL) está ahi, ten en cuenta también los permisos de la carpeta donde estás corriendo el script.
Saludos
Albertius
21 de Febrero de 2005, 02:24:58 pm
Hola, parece que todo esta bien, pero…cuando inserto una jpeg me da el mensaje de error “la imagen no es valida” y cuando intento insertar un gif me da un error de mysql.alguien me puede aclarar lo que pasa. Gracias
soledad
15 de Marzo de 2005, 03:46:11 pm
Hola…cuando intento guardar una imagen me envia un error que dice “El archivo que subiste no es una imagen válida”…a que se debe….gracias
yrais
17 de Marzo de 2005, 09:17:45 am
tengo una pregunta para usted: como hago para guardar un archivo imagen. tiff en un campo blob (developer 6i) oracle9
braulio
18 de Marzo de 2005, 08:33:45 pm
Este error se debe a que en el arreglo de tipos permitidos no agregué todos los tipos (el pjpeg por ejemplo). Este fin de semana actualizaré el Script para que lo puedan usar.
Saludos
braulio
18 de Marzo de 2005, 08:34:30 pm
Ya pronto, paciencia
Enzo
19 de Marzo de 2005, 12:09:51 pm
Como hago para ver o descargar las imagenes guardadas en la base de datos?
braulio
21 de Marzo de 2005, 07:25:09 pm
Puedes verlo en este enlace.
Ricardo
17 de Mayo de 2005, 05:16:17 pm
Súper interesante tu script, felicitaciones! AUnque no pude echarlo a funcionar, pero no importa, vale el esfuerzo y si le ha ido bien a otros, incluyéndote,entonces vale. Es mi problema el no saber configurar algo que se me escapa en estos momentos.
Pasando aotro tema, te agradecería mucho que me respondieras a mi eMail por lo siguiente:
Tengo un formulario para subir contenido y necesito que me permita browsear la imagen en mi PC, seleccionarla y luego de haber llenado el resto del formulario con el texto de resumen y el de detalle, que el script sea capaz de subir la foto en un directorio configurado en el mismo script.
Imagino que tú sabes bien a que me refiero y debes tener por ahí algo que me permita hacer esto. Yo he construido el formulario con el Dreamweaver y me funciona sumamente bien, coloca el texto y toda la información en la base de datos MySQL sin problemas, pero necesito lo de la foto, ya que actualmente tengo que valerme de un script externo para hacer esta operación, lo cual es engorroso.
De veras te agradeceré mcho si me ayudas, ya sabes mi correo.
Un fuerte abrazo,
Ricardo
Caronte Uruguayo
4 de Junio de 2005, 01:13:53 pm
me da error:
Warning: imagejpeg(): Unable to open ‘tn_urugy.jpeg’ for writing
en serv.windows no tengo problema, pero cuando lo paso el server linux…ahí comienzan los problemas y me aparecen esos lios.
Saludos Robert
braulio
4 de Junio de 2005, 05:49:35 pm
Tienes que cambiar los permisos de la carpeta donde quieres guardar las miniaturas. Está explicado en el artículo.
Saludos
Ricardo I Pacheco H
7 de Junio de 2005, 09:07:12 pm
Quiero hacer esto con Microsoft SQL, pero no encuentro como definir el tipo de datos BLOB, cual seria el equivanelnte de tu rutina: en MS sql ???
CREATE TABLE `tabla` (
`idfoto` int(3) NOT NULL AUTO_INCREMENT,
`nombre` varchar(255) NOT NULL DEFAULT ”,
`foto` blob NOT NULL,
`thumb` blob NOT NULL,
`mime` varchar(40) NOT NULL DEFAULT ”,
PRIMARY KEY (`idfoto`)
) ;
braulio
8 de Junio de 2005, 12:16:06 am
El equivalente de “blob” en SQL Server es “image”, la tabla quedaría más o menos asi:
CREATE TABLE tabla (
idfoto integer NOT NULL IDENTITY(1,1),
nombre varchar(255) NOT NULL,
foto image NOT NULL,
thumb image NOT NULL,
mime varchar(40) NOT NULL,
PRIMARY KEY (idfoto)
) ;
Saludos
lariosgg
8 de Junio de 2005, 01:21:52 pm
hola braulio:tengo q entregar mi proyecto final de curso y lo estoy haciendo en php ,el problema es q necesito guardar imagenes en la base de datos para despues mostrarlas en una especie de catalogo de productos. cuando inserto un nuevo producto a ese catalogo tengo q insertarle una imagen y ese es mi problema. YA HE MIRADO EL SCRIPT Q HAS DEJADO XO X ALGUNA CAUSA NO FUNCIONA Y LA VERDAD ES Q NO SE Q HACER , ESTOY COMO LOCO BUSCANDO LA SOLUCION AL PROBLEMA PLANTEADO . SI ALGUIEN ME PUEDE AYUDAR LE ESTARE ETERNAMENTE AGRADECIDO.
javier
13 de Junio de 2005, 06:03:11 pm
Esta pagina tiene este ejemplo q opinas de esto?
http://www.programacion.com/articulo/datos_blob/
Rodrigo Arriagada
14 de Junio de 2005, 03:55:46 am
Warning: imagejpeg(): Unable to open ‘thumbtemp’ for writing in public_html/admin/modulos/galeria.php on line 90
Warning: fopen(thumbtemp): failed to open stream: No such file or directory in public_html/admin/modulos/galeria.php on line 94
Warning: filesize(): Stat failed for thumbtemp (errno=2 - No such file or directory) in public_html/admin/modulos/galeria.php on line 95
Warning: fread(): supplied argument is not a valid stream resource in public_html/admin/modulos/galeria.php on line 95
Warning: fclose(): supplied argument is not a valid stream resource in public_html/admin/modulos/galeria.php on line 97
ke onda por ke no puede scribir en el archivo y por ke no lo encuentra
Rodrigo Arriagada
14 de Junio de 2005, 05:49:36 am
me guarda la foto pero no el thumbnail y tira este error
Warning: imagejpeg(): Unable to open ‘thumbtemp’ for writing in /home/borgocai/public_html/admin/modulos/galeria.php on line 71
Warning: fopen(thumbtemp): failed to open stream: No such file or directory in /home/borgocai/public_html/admin/modulos/galeria.php on line 81
Warning: filesize(): Stat failed for thumbtemp (errno=2 - No such file or directory) in /home/borgocai/public_html/admin/modulos/galeria.php on line 82
Warning: fread(): supplied argument is not a valid stream resource in /home/borgocai/public_html/admin/modulos/galeria.php on line 82
Warning: fclose(): supplied argument is not a valid stream resource in /home/borgocai/public_html/admin/modulos/galeria.php on line 84
Esteban
14 de Junio de 2005, 03:07:53 pm
Cuando quiero mostrar las imagenes guardadas, me aparece un cuadradito con un X [x] y no me muestra la imagen.
Alguien sabe a que se puede deber este problema? Socorrooooooooooo
braulio
18 de Junio de 2005, 05:12:42 pm
Para Rodrigo, ese error es porque no tienes los permisos necesarios, revisa bien los permisos, como dice en el artículo trata de que las fotos se guarden en un directorio diferente a la raiz.
Para Esteban, no puedo ayudarte porque no veo cómo estás mostrando las imágenes exáctamente, te sugiero ver éste artículo.
javer
20 de Junio de 2005, 07:35:21 pm
para guardar el thumbnail hay que crear un a carpeta en el servidor ?
A pesar de todo si se puede subir el archivo….pero los archivos jpg se guardan como pjpeg como cambio eso?
Y despues de eso no puedo ver la imagen solo sale el tipico cuadrito con una X adentro, cuando no puede mostrar la imagen.
Otra cosa a medida q guardo archivos pjpeg en la base de dato mysql aumenta automaticamente los “idfoto” eso lo entiendo, pero si llego a guardar “5″ archivos y despues los borro y luego vuelvo a subir archivos el “idfoto” empieza en el numero “6″ como puedo hacer para q empieze en el numero “1″?
alex
21 de Junio de 2005, 12:48:05 am
Sobre tu primera pregunta, ya NO es necesario crear una carpeta en el servidor, lo único que tienes que hacer es cambiar
define("NAMETHUMB", "thumbtemp");, pordefine("NAMETHUMB", "/tmp/thumbtemp");, como verás se añadió “/tmp/”, esto representa la carpeta temporal de tu sistema (para Linux /tmp, para windows probablemente c:/windows/temp), así ya no hay problemas con los permisos.Ahora sobre los pjpeg, es problema del Internet Explorer, pero igual debería funcionar…
Sobre los auto_increment del MySQL, para que se reusen los valores eliminados automáticamente tienes que usar otro tipo de tablas (no MyISAM), podrías asignar manualmente los nuevos ID’s pero sería engorroso, así que mejor lo dejas tal como está…
Mi profesor braulio tenía que actualizar eso en su artículo, pero al parecer está demasiado ocupado como para hacerlo, así que me tomé la libertad de contestarte…
Saludos
roberto
22 de Junio de 2005, 01:31:10 pm
Hola:
un pequeño problema, ya active la libreria gd, pero la normal la php_gd.dll por que la otra dice que no la encuentra pero si esta en el directorio, ademas cuando quiero ver la imagen se queda con un tache asi cuando no se ven. si me puedes ayudar a hecharlo andar te lo agradecere
NIko
22 de Junio de 2005, 11:50:04 pm
Grasias por tu articulo me sirvio mucho y es muy ilustrativo.
Victor De la Rocha
24 de Junio de 2005, 04:14:22 pm
Hola
Muy buen contenido, Felicitaciones.
javier
24 de Junio de 2005, 05:56:01 pm
Tengo otras dudas..
Digamos que la tabla ahora empieza en 6 y sigue 7,8,9,10 , ahora tengo 5 fotos en la tabla empezando desde “6″ ¿asi debe funcionar? no necesita el “idfoto” numero “1″ para poder mostrar la foto?
Otra pregunta utilizo dreamweaver y leyendo unos manuales descubri que dreamweaver no extrae datos binarios de tablas (en este caso de MySQL) ¿tendra q ver esto en algo ,como para que no se pueda ver las imagenes o el codigo publicado en este articulo no tiene q ver con eso?
Para probar la pagina antes de subirla al servidor web la estoy ejecutando en un servidor apache. Todos los archivos los ejecuto dentro de la carpeta del servidor apache (la carpeta donde se ejecutan todos los archivos) ¿MySQL debe estar dentro de esta carpeta?
Braulio
25 de Junio de 2005, 09:37:52 am
No, el id de la foto cambia cada vez
<img src="verblob.php?idfoto=6&tam=1″ alt=”Imagen desde Blob” />
En este caso te mostrará la foto que está identificada con el id “6″, revisa bien éste artículo.
Dreamweaver simplemente es un editor, no esperes que Dreamweaver te muestre todo lo que haces, los resultados ya los verás en el navegador.
Y mysql puede estar donde tú quieras, o donde lo hayas instalado o en un servidor externo, para que el script funcione simplemente debes seguir los pasos del artículo.
Saludos
Victor De la Rocha
26 de Junio de 2005, 12:16:13 am
Hola
Tengo problemas al guardar las imagenes. Suponiendo que tengo una imagen de 500Width 800Height:
-Cuando le de doy enviar en el formulario, esta
no me guarda la imagen completa en el archivo blob. Muestra la imagen desde el primer pixel de altura, hasta la mitad mas omenos (aprox 400px o 600px) y lo que resta para completar el tamaño de la imagen me la muestra en blanco o transparente.
¿Como puedo solucionar este problema? Ya intente haciendo mas grande el buffer de memoria de el php.ini para la cantidad de memoria que pasa por los POST, incremente el tiempo de espera para la ejecucion de archivos en el mismo archivo.
¿Creen que tenga que buscar en otro lado?
¿Donde podria estar este problema?
Victor De la Rocha
26 de Junio de 2005, 01:35:03 am
Hola, Encontre la respuesta ami post anterior…
Para que no se guardara simplemente 80% de la imagene siendo que exede el tamaño del campo, simplemente cambio el tipo BLOB por LONGBLOB y listo.
Jaime
28 de Junio de 2005, 01:49:57 pm
Roberto: yo tuve bastante problema con la identificación de la php_gd2.dll, la puse en c:\php\extensions y no me la veia el info.php. Lo solucioné colocando la que tiene de 776Kb de tamaño; que puedes sacarla de los binaries de un php para windows en php.net
tinman
9 de Julio de 2005, 12:45:57 am
Magnifico artículo. Claro, conciso y eficiente.
Felicidades y gracias
Francesc
14 de Julio de 2005, 01:56:00 pm
Cómo es que no me pasa la foto como argumento POST del script. Lo que digo es q si hago un print_r del $_POST sólo me aparecen enviar y nombre. Que pasa?
Braulio
14 de Julio de 2005, 02:32:51 pm
Fíjate si tu form tiene el atributo enctype=”multipart/form-data”
Francesc
14 de Julio de 2005, 04:15:57 pm
tiene el atributo enctype=”multipart/form-data”
El codigo es el siguiente:
“>
Nombre:
Imagen:
y al hacer un print_r($_POST); me sale:
Array
(
[nombre] => ds
[enviar] => Guardar
)
y no me pone nada de [foto] (print_r imprime un array)
Braulio
14 de Julio de 2005, 04:18:07 pm
Y si haces un print_r($_FILES) ???
Francesc
14 de Julio de 2005, 04:20:14 pm
grácias
lo dl print_r($_FILES) si q me funciona
A ver que tal me va ahora…
Saludos!
ALI
16 de Julio de 2005, 10:06:33 am
tengo este problema, escribi este script para subir imagenes al servidor y funciona a medias tintas, porq sube el archivo pero sin su extension entonces cuando lo quiero que se “imprima” en la pagina no reconoce nada. Se me ocurrio poner en el script del array que muestra la foto agregarle la extension pero en el formulario doy la posibilidad de subir imagenes gif y jpg y no quiero limitar el form a un solo formato. es muy importante para mi resolver esto y te agradeceria que me des una ayuda con esto. para lo que te pueda servir… ALI (como mohamed). aca va el script
Se ha transferido el archivo $archivo_name”;
echo “Su tamaño es: $archivo_size bytes”;
echo “El fichero es tipo: $archivo_type “;
}
}else{
echo “No ha podido transferirse el fichero”;
echo “su tamaño no puede exceder de $lim_tamano bytes”;
}
?>
ALI
16 de Julio de 2005, 10:07:53 am
este es el script del post anterior
Se ha transferido el archivo $archivo_name”;
echo “Su tamaño es: $archivo_size bytes”;
echo “El fichero es tipo: $archivo_type “;
}
}else{
echo “No ha podido transferirse el fichero”;
echo “su tamaño no puede exceder de $lim_tamano bytes”;
}
?>
ALI
16 de Julio de 2005, 10:09:24 am
no me publica es script espero q a vos te haya llegado. sino mandame un mail que te lo envio.
Erio Cesar Garcia
19 de Julio de 2005, 05:38:46 pm
mi problema era el siguiente:
Warning: filesize() [function.filesize]: stat failed for c:/windows/temp/thumbtemp in
Warning: fread() [function.fread]: Length parameter must be greater than 0. in
y lo resolvi asumiendo que necesita in valor integer en la expresion filesize
$fp = fopen(NAMETHUMB, “rb”);
$tthumb = fread($fp, filesize(NAMETHUMB));
Erio Cesar Garcia
19 de Julio de 2005, 05:41:25 pm
$fp = fopen(NAMETHUMB, “rb”);
$tthumb = fread($fp, filesize(NAMETHUMB));
Jose Manuel
9 de Agosto de 2005, 11:16:43 am
Hola, ya he revisado de pies a cabeza el script y todo se ve bien, mi servidor esta en windows y me arroha la siguiente error
“Parse error: parse error in c:\domains\mismascotas.com.ve\wwwroot\grardarfotomysql.php on line 12″
la linea del scrip esta asi
define(”NAMETHUMB”, “c:/windows/temp/thumbtemp”);
Frank
22 de Agosto de 2005, 03:00:53 pm
Hola
Tego un problema con NAMETHUMB. he intentado usar los dos metodos, Linux y Windows en :
//define(”NAMETHUMB”, “/tmp/thumbtemp”); //Esto en servidores Linux, en Windows podría ser:
define(”NAMETHUMB”, “C:/windows/temp/thumbtemp”); //y te olvidas de los problemas de permisos
y al ir a guardar la foto me aparecen estos mensajes de error:
Warning: imagejpeg(): Unable to open ‘c:/windows/temp/thumbtemp’ for writing in /home/wwwfotbmak/domains/fotoclubterrassa.com/public_html/testphp/blob.php on line 70
Warning: fopen(): Unable to access c:/windows/temp/thumbtemp in /home/wwwfotbmak/domains/fotoclubterrassa.com/public_html/testphp/blob.php on line 86
Warning: fopen(c:/windows/temp/thumbtemp): failed to open stream: No such file or directory in /home/wwwfotbmak/domains/fotoclubterrassa.com/public_html/testphp/blob.php on line 86
Warning: filesize(): Stat failed for c:/windows/temp/thumbtemp (errno=2 - No such file or directory) in /home/wwwfotbmak/domains/fotoclubterrassa.com/public_html/testphp/blob.php on line 87
Warning: fread(): supplied argument is not a valid stream resource in /home/wwwfotbmak/domains/fotoclubterrassa.com/public_html/testphp/blob.php on line 87
Warning: fclose(): supplied argument is not a valid stream resource in /home/wwwfotbmak/domains/fotoclubterrassa.com/public_html/testphp/blob.php on line 89
Fotos guardadas
la carpeta donde guarde blob.php tiene privilegios de lectura y escritura, pero sigo sin encontrar una solucion.
Gracias
Solange
12 de Septiembre de 2005, 01:07:22 am
esta muy interesante el codigo pero me da el siguiente error Fatal error: Call to undefined function: imagecreatetruecolor() in … on line 47, en esa linea está $thumb = imagecreatetruecolor($ancho, ALTURA);
Me podras ayudar??? :S muchisimas gracias
Braulio
12 de Septiembre de 2005, 09:48:52 am
Solange, el problema es que no tienes la librería GD, revisa bien el artículo y baja la librería que ahi te muestro como configurarla, la librería está en:
http://www.buayacorp.com/files/php/php_gd2.zip
fany
18 de Septiembre de 2005, 12:31:50 pm
TE AGRADESCO MUCHO ESTE SCRIPT QUE NOS HAS PROPORCIONADO NOS HA SERVIDO DE MUCHO, PERO TENGO UN PEQUE
alex
18 de Septiembre de 2005, 02:47:43 pm
Fany, con este método sólo podrás visualizar una imagen a la vez, para visualizar otra tienes que hacer otra página adicional, sobre tu idea de guardar las imágenes en el cliente no entiendo muy bien, pero la manera más sencilla de hacerlo es subir las imágenes a un directorio de tu servidor y luego utilizar etiquetas
img, en la base de datos sólo guardarías los nombres de los archivos…Saludos
Maria
22 de Septiembre de 2005, 02:49:56 pm
hola. he estado tratando muchisimo de cargar en una pagina todas las imagenes que tengo en la tabla de la BD mysql. pero solo me muestra una sola. el codigo en resumen:
$result = mysql_query (”SELECT idfoto,foto FROM tabla”,$link);
while($row=mysql_fetch_array($result))
{
header(”Content-type: image/jpeg”);
echo $row[”foto”];
}
Porque solo me muestra una sola de todas las que tengo…Gracias de antemano
alex
22 de Septiembre de 2005, 06:16:49 pm
María, como he mencionado en el comentario anterior al tuyo no puedes mostrar varias imágenes usando sólo una página, tienes que usar un mínimo de 2:
* Una que muestre la imagen en base a un código o nombre.
* La otra haciendo la iteración sobre las imágenes que quieres mostrar, haciendo uso de la primera página:
<img src="pagina1.php?codigo=$fila[codigo]" />Saludos
Maria
26 de Septiembre de 2005, 10:21:08 am
ah ok. entonces lo ideal para hacer una galeria es con archivos en ves de data base??
Braulio
26 de Septiembre de 2005, 01:07:05 pm
Asi es, es mejor hacerlo con archivos, algún tipo de sistema que te acepte upload de imágenes, y redimension con GD, en vez de uno que guarde en base de datos.
Maria
26 de Septiembre de 2005, 02:58:18 pm
si bueno asi lo he estado haciendo. pero con todo este boom de la database pense que era mas factible.gracias!!!!!! muy amable
mdb
14 de Octubre de 2005, 11:58:56 am
necesito de su ayuda, estoy haciendo una pagina web en la cual se requieren meter documentos adjuntos pero para eso debo utilizar el BLOB, lo malo es que no se cmo funciona ni como se debe insertar en ese campo, estoy utilizando mysql,dreamweaver y php, si me pudieran ayudar se los agradeceria mucho.
javier
7 de Noviembre de 2005, 02:41:42 pm
Hola este error pq se da: Table ‘test.tabla’ doesn’t exist¿?
he copiado todo exactamente como esta…
jaalnapa@hotmail.com si alguien me quiere ayudar
Julian
7 de Noviembre de 2005, 02:44:29 pm
todo me funciona perfecto pero cuando una
imagen es un poco grande (digamos mas de 400 kilos o por ahi) o mas que eso, me da el
siguiente error:
Fatal error: Allowed memory size of 8388608 bytes exhausted at (null):0
(tried to allocate 11844 bytes)
Alguien sabe a que se puede deber este error??
Muchas gracias.
javier
7 de Noviembre de 2005, 02:47:04 pm
Sorry ya lo correji… tremendo pelon… estaba colocando mal la base de datos…
pablo
14 de Noviembre de 2005, 02:37:14 pm
Hola que tal!
Miren mi problema es este:
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘f:/Windows/Temp/’ for writing in f:\wamp\www\thumb\blob.php on line 52
Warning: fopen(f:/Windows/Temp/) [function.fopen]: failed to open stream: Permission denied in f:\wamp\www\thumb\blob.php on line 68
Warning: fread(): supplied argument is not a valid stream resource in f:\wamp\www\thumb\blob.php on line 69
Warning: fclose(): supplied argument is not a valid stream resource in f:\wamp\www\thumb\blob.php on line 71
Fotos guardadas
Me guardo la foto pero NO el thumbnail.
Cambie los permisos de la carpeta que contiene blob.php pero vuelvo a mirar sus propiedades y aparece de nuevo tickado solo lectura.
Otra cosa la ruta de NAMETHUMB como es al final??
a:c:\Windows\Temp\
b:c:/windows/temp/thumbtemp
c:c:/windows\temp\thumbtemp
Utilizo wamp5 y lo estoy ejecutando en mi pc.
Grac ias de antemano!
Oso Cebado
14 de Noviembre de 2005, 03:46:27 pm
Felicito a quienes ayudan a otros a desarrollar sus sitios web.
Tengo algunos sitios con base de datos, en los cuales subo imágenes blob.
Todo funciona bien, pero necesito desarrollar una galería de imágenes, en que pueda presentar 3 o 4 fotos por fila.
Lo más usual es mostrar un registro por línea, pero me gustan las cosas difíciles. Ya vi un comentario en que proponen hacerlo sin blob, pero tiene que haber algún modo de hacerlo y si alguien lo sabe, mucho agradeceré su ayuda.
Buena Caza
alex
14 de Noviembre de 2005, 07:59:59 pm
Hola,
Pablo: Al parecer el usuario bajo el que se ejecuta el servidor web, no tiene permisos de escritura sobre c:\Windows\Temp\ (cosa extraña), lo que puedes hacer es definir un directorio donde se tenga estos privilegios. Por otro lado “thumbtemp” es el nombre con el que se crea temporalmente el thumbnail.
Oso Cebado: Como ya había mencionado en comentarios anteriores, para evitar hacer uso de los blobs, tienes que guardar las imágenes en algún directorio de tu servidor web y en tu base de datos sólo guardas esas rutas (nombres) de esas imágenes…
Saludos
irene
20 de Diciembre de 2005, 05:30:12 pm
hola como estan besos
Alex
20 de Diciembre de 2005, 07:12:46 pm
Gracias
CLAUDIA
28 de Diciembre de 2005, 02:49:03 pm
HOLA SE QUE MI PREGUNTA ES MUY TONTA, ES QUE ME MANDA ESTE MENSAJE DE ERROR
Fatal error: Call to undefined function: imagecreatefromjpeg()
COMO HAGO ESA FUNCION POR QUE NO LA TENGO
LO SIENTEO PERO TE AGRADECERIA QUE ME DIJIERAS
pixel-inc » Guardar una imagen y su miniatura a un campo Blob de mysql
29 de Diciembre de 2005, 12:55:46 pm
[…] en el servidor, solamente en la base de datos mysql. ¿Interesante verdad? El enlace es: http://www.buayacorp.com/archivos/guardar-una-image […]
Sergio
1 de Enero de 2006, 07:41:30 pm
Hola,
primero felicitar al autor del script por el trabajo realizado y de gran utilidad.
Ahora mi consulta, como es que la imagen no puede superar los 64KBytes? Es decir, si subo una imagen con un tamaño superior, esta es recortada.
Gracias de antemano,
Sergio
braulio
3 de Enero de 2006, 01:31:51 am
Claudia, la respuesta la di en el comentario 55.
braulio
3 de Enero de 2006, 12:43:26 pm
Sergio, Alejandro lo explica muy bien en este comentario.
Liliam
11 de Enero de 2006, 09:41:01 am
Tengo un problemita con el codigo de “verblob.php”, sale este error y no se por q es, les ruego q me ayuden ……
ERROR”
Warning: Cannot modify header information - headers already sent by (output started at /home/virtual/site77/fst/var/www/html/CatolicaTV/pages/noticia/verblob.php:5) ”
GRACIAS ESTARE MUY AGRADECIDA SI ALGUIEN ME DA UNA MANO!!
Jose
12 de Enero de 2006, 04:06:41 am
Hola, k tal, antes que nada felicitarte y agradecerte el trabajo que cedes al uso de los miles de internautas que no disponemos de los conocimientos necesarios para realizar estas creaciones. te escribo tambien porque tengo un problemilla con el codigo, escribo el nombre, inserto la imagen y cuando le doy a insertar, me sale el error de ” pagina no encontrada”. Tengo la duda tambien de una vez insertada la imagen en la base de datos, ¿cual es el codigo para recuperarla? he visto el articulo de “mostrar una imagen…, pero veo trozos de codigo que no se componer, ¿podrias ayudarme?
Te dejo el codigo modificado por mi, a ver si hallas el error:
blob.php
Ha este lo llame inicio.html
Imagen a Blob
“>
Nombre:
Imagen:
Un saludo!!!
principiante
30 de Marzo de 2006, 02:13:16 pm
estoy haciendo un proyecto donde necesito guardar una galeria de fotos y guardar sus datos en una base de datos y luego mostrarlas en el navegador con sus datos alguien podria ayudarme estoy trabajando con php , mysql, y dreamweaver
muchisimas gracias
Guillita
18 de Abril de 2006, 03:28:40 pm
Hola, escribo para avisar a los usuarios de MACROMEDIA DEAMWEAVER que no les funciona el script de ver las imagenes BLOB, a los que les sale la maldita aspa roja en lugar de ver la imagen, tened CUIDADO con el código HTML que añade por defecto Dreamweaver, esa basura hizo que me petara el Script PHP de Braulio, he borrado tooodo el HTML que he dejado el archivo en BLANCO y he copiado SOLO EL CODIGO PHP y funciona de maravilla.
GRACIAS BRAULIO Y ENHORABUENA
Néstor
22 de Abril de 2006, 10:01:45 am
Las imagenes las sube perfectas pero las miniaturas no me las crea. Alguien sabe por qué? El caso es q no da ningún error.
El servidor es Linux gestionado desde Plesk.
Un saludo y gracias
Llorenç
28 de Abril de 2006, 01:00:48 am
Tengo sistema operativo windows xp prof. y trabajo con xampp (www.xampp.org) para hacer y probar mis páginas php. Este script funciona perfectamente sobre el servidor real (cdlbalears.com) pero no hay manera que funcione en modo local para las pruebas. Seguro que es un problema de permisos, pero he probado con define(”NAMETHUMB”, “c:/windows/temp/thumbtemp”);, define(”NAMETHUMB”, “c:/thumbtemp”);, etc., pero en ninguna de estas rutas tengo acceso. ¿Cómo puedo modificar los permisos con xp para este script?
NOTA: He probado con tres ordenadores distintos con xp profesional y xampp, y los tres hacen lo mismo.
Gracias y excelente trabajo con este script!
Llorenç
28 de Abril de 2006, 03:06:25 pm
Ya resolví el problema. Cuando se instala xampp, éste crea una carpeta TEMP en el mismo directorio de xampp (por ej. c:\xampp\temp). He puesto esta ruta como lugar para los archivos temporales, y ha ido bien (por lo visto ahí sí que windows le permite escritura al servidor web de xampp).
Bueno, gracias por todo.
Un saludo.
nelson
13 de Mayo de 2006, 06:18:49 pm
hola
javier
13 de Mayo de 2006, 06:43:21 pm
porfavor necesito ayuda urgente, he tratado incansablemente de arreglar este problema , defini el directorio para guadar los archivos temporales fuera del directorio raiz como dice el articulo en ‘c:/windows/temp’ y no he podido lograr nada , tambien he tratado de probar con otros directorios a aparte de ese y tampoco resulta, si alguien sabe como arreglar este problema en SO WINDOWS le agradeceria su ayuda
Warning: imagegif(): Unable to open ‘c:/windows/temp’ for writing in d:\www\fotos\foto.php on line 58
Warning: fopen(c:/windows/temp): failed to open stream: Permission denied in d:\www\fotos\foto.php on line 73
Warning: fread(): supplied argument is not a valid stream resource in d:\www\fotos\foto.php on line 74
Warning: fclose(): supplied argument is not a valid stream resource in d:\www\fotos\foto.php on line 76
Fotos guardadas
javier
13 de Mayo de 2006, 07:13:22 pm
hola de nuevo en caso de que no se pudiera arreglar el problema que tengo sobre los permisos de las carpeta , hay alguna forma de modificar el script
para que en ves de que el archivo temporal se guarde en un directorio especificado , se pueda guardar en una variable o algo haci
braulio
14 de Mayo de 2006, 06:22:19 pm
Javier, en el comentario 82 tenía un problema parecido al tuyo, léelo a ver si te ayuda en algo.
alejandro
21 de Mayo de 2006, 07:37:42 pm
muy muy bueno, felicitaciones, tengo una pregunta
¿el lo mismo poner
if($_POST) o if($_POST[”enviar”])
en lugar de
$postback = (isset($_POST[”enviar”])) ? true : false;
if($postback) ? gracias
braulio
22 de Mayo de 2006, 02:12:08 pm
Si quieres resumir yo pondría:
Guille
26 de Mayo de 2006, 09:58:02 pm
Buenas, soy nuevo en lo que es hacer paginas dinamicas,asi que encontre intenresante este post. Mi pregunta es como puedo poner las imgenes si utilizo el phpmyadmin?
Les agradeceria que me respondieran
Braulio
27 de Mayo de 2006, 10:47:45 am
El phpmyadmin no tiene nada que ver aquí. El phpmyadmin sólo es una ayuda para administrar tu base de datos mysql mediante web, tú sólo sigue los pasos que expliqué y todo irá bien. Saludos
Bto
27 de Mayo de 2006, 02:07:54 pm
Saludos Braulio, la unica modificacion que hago es en el formulario
action=”" por
Fatal error: Call to undefined function: imagecreatefromgif() in /home/webcindario/vision-digital/thumbs/blob.php on line 38
Bto
27 de Mayo de 2006, 02:12:56 pm
Saludos Braulio, la unica modificacion que hago es en el formulario
action=”" por
action=”blob.php”, tambien puse mi formulario foto y blob.php en una carpeta,
y mi error es el siguiente:
Si cargo una foto jpg
Fatal error: Call to undefined function: imagecreatefromjpeg() in /home/webcindario/vision-digital/thumbs/blob.php on line 35
Si cargo una foto gif
Fatal error: Call to undefined function: imagecreatefromgif()
in /home/webcindario/vision-digital/thumbs/blob.php on line 38
en el caso del jpg da igual subir una foto jpg o jpeg ? ya que en el codigo esta
“image/jpeg”
y yo subo fotos jpg, solo es una incognita. espero tener respuesta, gracias.
Braulio
28 de Mayo de 2006, 02:23:45 pm
Bto: el error que sale es porque no tienes la librería GD para manipular las imágenes. En el inicio del artículo explico que cosas necesitamos y como podemos instalar esta librería.
Bto
29 de Mayo de 2006, 04:20:50 pm
Ok, pero dime, yo no tengo el php en mi computadora, lo unico que yo hago es copiar los codigos y cargarlos en mi servidor miarro.com y desde ahir ver como se ejecuta los codigos(php,html,etc) en mi web, podrias ayudar en este caso.
hasta ahora, he hecho conexion a mi BD mysql, ingresar registros a mi tabla y hacer busqueda, ahora me gustaria guardar fotos a mi tabla, eh ir armando un pequeño sistema, y como te digo solo creo los codigos y lo cargo a mi web, que soporta obviamente codigo php. Saludos Braulio.
Braulio
29 de Mayo de 2006, 07:39:36 pm
Debido a que miarroba es un servicio gratuito no soporta la extensión GD para la manipulación de imágenes, las fotos originales puedes guardaras fácilmente en tu base de datos, pero lo que no se puedes es crear miniaturas y guardarlas.
Si deseas sólo guardar las fotos originales, borra la parte del script desde donde dice:
// Creando el thumbnail
hasta
# contenido de la foto original
Y también desde:
# contenido del thumbnail
hasta
// Borra archivos temporales si es que existen
Y tu tabla ya no debería tener el campo thumb, porque este ya no existe. Si tienes mas dudas contáctame.
roberto
30 de Mayo de 2006, 03:21:28 pm
esta bueno el escripot pero al momento de subir me a parece un error
Forbidden
You don’t have permission to access /subirar/
roberto
30 de Mayo de 2006, 03:30:04 pm
necesitari aque me dijeras si tengo que cambiar el permiso de las carpetas y como lo hago si estoy en windows…
es para mi galeria de imagenes..
gracias
bto
1 de Junio de 2006, 10:37:35 am
Braulio, quise contactarme contigo desde donde dice contacto, pero al enviar la informacion, salio error, asi que me vi en la necesidad de hacerlo por este medio. Creo que es porque envio mucho texto, asi que lo hare en dos partes.
Hice las modificaciones del caso, pero me sigue arrojando error, este es el script que tengo:
bto
1 de Junio de 2006, 10:47:43 am
No puedo enviarte toda la informacion, asi que solo te dire el error que me vota.
Warning: fopen(): open_basedir restriction in effect. File(/tmp/phpXusuEk) is not within the allowed path(s): (/home/webcindario/vision-digital) in /home/webcindario/vision-digital/thumbs/blob.php on line 32
Warning: fopen(/tmp/phpXusuEk): failed to open stream: Operation not permitted in /home/webcindario/vision-digital/thumbs/blob.php on line 32
Warning: filesize(): open_basedir restriction in effect. File(/tmp/phpXusuEk) is not within the allowed path(s): (/home/webcindario/vision-digital) in /home/webcindario/vision-digital/thumbs/blob.php on line 33
Warning: fread(): supplied argument is not a valid stream resource in /home/webcindario/vision-digital/thumbs/blob.php on line 33
Warning: fclose(): supplied argument is not a valid stream resource in /home/webcindario/vision-digital/thumbs/blob.php on line 35
Column count doesn’t match value count at row 1
Gracias por seguir de cerca mi caso, espero porfavor me puedas ayudar, recuerda que solo quiero guardar fotos a mi tabla, saludos Braulio
jhon pariahuaman
1 de Junio de 2006, 05:16:05 pm
el error es de tipo 1064
debes conocerlo bien si sabes m,ucho de MySQL, ademas me indique que revise el manual de syntrax y ademas me sale el siguiente error [foto blob not null]
Braulio
1 de Junio de 2006, 06:44:51 pm
Bto, cuando open_basedir está activo se restringe el uso de las funciones que manipulan archivos, esto es porque webcindario es una comunidad y tienen que tener seguridad para todos sus usuarios. Supongo que tendrás que cambiarte de hosting.
Bto
3 de Junio de 2006, 07:50:28 pm
Bueno supongo que ezo debe zer ^^ no?, puedez recomendarme un hosting gratis en donde pueda uzar todoz loz recurzoz del php con base de datos, gracias por todo.
Braulio
4 de Junio de 2006, 05:54:47 pm
Pues existen muchos servicios gratuitos, pruebalos cuales te convienen. :p
Bto
6 de Junio de 2006, 03:54:05 pm
En definitiva, puedo insertar o guardar registros a mi tabla pero no puedo guardar fotos a mi tabla?, estas zeguro.
Miguel
8 de Junio de 2006, 06:18:14 am
Excelente codigo, en geberal todo esta muy bien. En internet se consigue mucho codigo basura y que no sirve o tiene problemas de sintaxis pero este me funciono a la primera prueba que realice. Muchas gracias.
chido one
13 de Junio de 2006, 12:54:08 pm
son unos idotas, como se ponen a preguntar si no saben, como crear tablas, de verdad se maman.
mariel
21 de Junio de 2006, 07:37:58 pm
hola esta muy bien el codigo yo estoy batallando porq tengo una base de datos pero en mysql use phpmyadmin para crearla pero ahora quiero ingresar una foto y no se como acerle alguien sabe me urge
Arturo
7 de Julio de 2006, 01:15:46 pm
hola amigos, me ha ayudado mucho este script, todo esta cojonudo, pero la cosa es que al grabar y revisarlo en mysql no me guarda en el campo thumb solo la foto normall, a que se debe, no me muestra error alguno.
Arturo
7 de Julio de 2006, 01:23:10 pm
Anotacion: Estoy trabajando con el Apache, y en windows xp. como os dije no me da error alguno. he cambiado las carpetas de los temporales y sigo con lo mismo.
Arturo
7 de Julio de 2006, 01:47:52 pm
Ya he solucionado el problema: en el caso de windows
define(”NAMETHUMB”, “c:/tmp/thumbtemp”)
ya que por defecto era c:/windows/temp y no existia la carpeta
Gracias por todo.
David
19 de Julio de 2006, 06:21:17 am
Veo que algunos se estan volviendo locos con este problema de permisos ejemplo y en realidad lo que estais haciendo mal es que estais definiendo la ruta con una carpta que ya existe y por eso os da problemas de escritura.
Como bien dice el error
Warning: imagegif(): Unable to open ‘c:/windows/temp’ for writing in d:\www\fotos\foto.php on line 58 esta claro que no puedes escribir una carpeta que ya existe y es tan importante como esa.
Solución:
define(”NAMETHUMB”, “c:/windows/temp/thumbtemp”);
y asegurate de que no exista ningun carpeta en c:/windows/temp que se llame thumbtemp porq te dara el mismo problema.
P.D. Quizas llegue muy tarde
Braulio
19 de Julio de 2006, 11:38:45 am
Gracias por tu apoyo David
eoitos
11 de Agosto de 2006, 02:57:04 am
Simplemente: felicidades !!!! Es de agradecer el trabajo que has realizado y también a los foreros que con sus preguntas y dudas acaban de hacerlo más comprensible.
De nuevo: MUY BUEN TRABAJO.
Me gustaría poder aplicarlo en mi página personal y solicito si me puedes decir si es necesario que en el script te haga referencia o lo dispones como freeware. Por favor, respóndeme a mi cuenta de correo porque no sé si volveré a pasarme por aquí.
De nuevo: gracias!. Cuanta mente genial corretea por ahí …
Braulio
11 de Agosto de 2006, 10:56:36 am
eoitos, todos los artículos, scripts o anotaciones que hacemos están con licencia Creative Commons: Common Deed. Gracias por tu apoyo.
Mildred (Mily)
30 de Agosto de 2006, 09:54:49 am
Hola Braulio, te felicito muy buen articulo, estuve corriendo buscando y probando varios código y ninguno funciona tan genial como este, gracias por colaborar con las personas que estamos aprendiendo cosas nuevas… Me funciono al primer intento.
También use el script para mostrar la imagen… voy a invorporalo a la aplicación que estoy haciendo si tengo algún problema, te puedo preguntar???
Raquel_Yutssely
15 de Septiembre de 2006, 06:45:38 pm
Tengo un problema cuando coloco
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
$img = imagecreatefromjpeg($tmp_name);
break;
case $mimetypes[2]:
$img = imagecreatefromgif($tmp_name);
break;
case $mimetypes[3]:
$img = imagecreatefrompng($tmp_name);
break;
} siempre me aparece error, aunque ya e guardado imagenes en mysql, pero necesito realmenet identificar el tipo, si alguiene me puede ayudar se lo agradeceria por favor?
Braulio
15 de Septiembre de 2006, 07:04:28 pm
Cuál es el error que te aparece?
Luisa
26 de Septiembre de 2006, 05:37:24 pm
Hola Braulio, necesito tu ayuda urgente.
Estuve utilizando tu codigo, el cual me parecio muy bueno, y lo probe en el localhost de mi pc y funciono muy bien, pero cuando publico mi pagina en Internet me salen los siguiente errores:
Warning: imagejpeg(): Unable to open ‘c:/WINDOWS/Temp/thumbtemp’ for writing in /home/content/j/a/a/jaazz4/html/blob.php on line 66
Warning: fopen(c:/WINDOWS/Temp/thumbtemp): failed to open stream: No such file or directory in /home/content/j/a/a/jaazz4/html/blob.php on line 82
Warning: filesize(): Stat failed for c:/WINDOWS/Temp/thumbtemp (errno=2 - No such file or directory) in /home/content/j/a/a/jaazz4/html/blob.php on line 83
Warning: fread(): supplied argument is not a valid stream resource in /home/content/j/a/a/jaazz4/html/blob.php on line 83
Warning: fclose(): supplied argument is not a valid stream resource in /home/content/j/a/a/jaazz4/html/blob.php on line 85
Fotos guardadas
Ademas a la hora de mostrar las imagenes me sucede lo mismo, es decir solo funciona en el localhost pero no se muestra ninguna imagen cuando trabajo en el servidor real de mi pagina web.
Please respondeme
alex
26 de Septiembre de 2006, 08:47:47 pm
Estimada Luisa, el sistema de archivos de tu computadora es diferente a la de tu servidor, para que funcione correctamente en este último, verifica que NAMETHUMB tenga el siguiente valor:
define(”NAMETHUMB”, “/tmp/thumbtemp”);
Saludos
Luisa
27 de Septiembre de 2006, 05:17:00 pm
Estimado Alex, muchas gracias por tu ayuda.
Logre solucionar el problema al momento de guardar los thumbs, pero igual sigo sin poder mostrar las imagenes.
Te agradeceria mucho si me ayudaras.
Saludos
Kapithan
28 de Septiembre de 2006, 06:59:20 pm
Hola muy bueno el codigo y la explicacion. Tengo un solo inconveniente, cuando guardo imagenes grandes, al verlas aparecen cortadas, no se si lo que esta generando este error es la capacidad de almacenamiento del campo blob u otro motivo. Te agradeceria una respuesta. Muchas Gracias
Abrahan
6 de Octubre de 2006, 08:04:41 pm
Esta muy bueno todo esto de gurdar la foro en my sql, pero tengo una pregunta alguien sabe como cambiar la interfaz de html por una en flash 8 si la tienen me la podrian facilitar………….
Gracias
Abrahan
6 de Octubre de 2006, 08:15:04 pm
Donde puedo descargar PostgreSQL ….. por que la mayoria de las paginas o cobran o dan errores ………..les a gradeceria………….
alex
6 de Octubre de 2006, 09:55:52 pm
Abrahan, tienes varios mirrors de donde descargar, no te pongo enlaces porque no sé si necesitas los binarios o el código…
Saludos
Chavez
7 de Octubre de 2006, 11:19:20 pm
No se complique la vida muchos de los erros que da el script es porque “NAMETHUMB” en algunos casos aparece sin las comillas es decir de esta manera NAMETHUMB, la solucion es agregarlas
Maurox
9 de Octubre de 2006, 08:56:50 am
Ayuda porfa, que significa este error:
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘C:/tmp/thumbtemp’ for writing in C:\MiServer\WEB\prueba_php\blob.php on line 60
Warning: fopen(C:/tmp/thumbtemp) [function.fopen]: failed to open stream: Permission denied in C:\MiServer\WEB\prueba_php\blob.php on line 76
Warning: fread(): supplied argument is not a valid stream resource in C:\MiServer\WEB\prueba_php\blob.php on line 77
Warning: fclose(): supplied argument is not a valid stream resource in C:\MiServer\WEB\prueba_php\blob.php on line 79
Fotos guardadas
Maurox
10 de Octubre de 2006, 10:38:44 am
The foro dead
eagle_friend_H
23 de Octubre de 2006, 10:57:05 am
Todo es casi perfecto, puedo guardar imagenes y puedo visualizarlas, mi problema es que cuando muestro la imagen de mi base de datos y quiero mostrar los demas campos de mi tabla simple y sencillamente no se visualizan, solo se visualiza la imagen y nada más.
¿QUE PUEDO HACER? para mostrar lod demás datos ademas de la imagen en la misma página
tita
24 de Octubre de 2006, 04:53:52 pm
Hola braulio me manda este error y tengo activada la libreria que mencionaste
atal error: Call to undefined function imagecreatefromjpeg() in C:\wamp\www\imagenes\subir.php on line 35
prodrias alludarme. gracias
Gustavo
29 de Octubre de 2006, 02:48:11 pm
Este scrip, funciona de maravilla, Muchas Gracias. !
janeth
30 de Octubre de 2006, 12:19:22 pm
Hola me da gusto que por fin un script me ingrese imagenes y datos……Solo que en el borwser me marca muchos errores……como estos:
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘/tmp/thumbtemp’ for writing in C:\Program Files\xampp\htdocs\hemsa\fotos\blob.php on line 52
Warning: fopen(/tmp/thumbtemp) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\xampp\htdocs\hemsa\fotos\blob.php on line 68
Warning: filesize() [function.filesize]: stat failed for /tmp/thumbtemp in C:\Program Files\xampp\htdocs\hemsa\fotos\blob.php on line 69
Warning: fread(): supplied argument is not a valid stream resource in C:\Program Files\xampp\htdocs\hemsa\fotos\blob.php on line 69
Warning: fclose(): supplied argument is not a valid stream resource in C:\Program Files\xampp\htdocs\hemsa\fotos\blob.php on line 71
Fotos guardadas
Me gustaria que alguien me compartiera un poquito de sus conocimientos para la solución de estos problemas…..De antemano le agradezco su ayuda…Saludos….bye
alex
30 de Octubre de 2006, 12:34:16 pm
Janeth, revisa el comentario #120
janeth
30 de Octubre de 2006, 12:34:18 pm
Hola ya corregi los errores que me marcaban….pero me gustaria que en la misma pagina se mostraran las imagenes en una tabla o algo asi…es para un proyecto que tengo de galeria de imagenes…..¿se puede hacer esto? de antemano gracias por tu ayuda bye
alex
30 de Octubre de 2006, 12:43:52 pm
Para hacer eso necesitas de 2 páginas, una que muestre sólo una imagen (a.php) y otra que se encargue de mostrar el listado de imágenes, que haga referencia a la página a.php a través del tag
imgSaludos
Ariel
31 de Octubre de 2006, 11:50:44 am
Hola soy nuevo en esto de MySQL, perdon si pregunto algo obvio.
Como se tiene que llamar la base, y que campos debe tener con que nombres para que funcione el script. Muchas gracias
Alvin
31 de Octubre de 2006, 02:39:48 pm
Bueno, aunque mi script está bastante modificado en cuanto al uso de la base de datos y la forma en que son llamados, tiene como base los que se presentan en esta página, implementando el uso de un buffer de memoria, ya que el servidor web no permitía la escritura de un archivo temporal, y en vista de que la política de permisos de escritura no cambiaría, use este recurso.
Esto resolvería los problemas de aquellos similares a estos warnings/errores:
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘/tmp/thumbtemp’ for writing in C:\x on line YY
Warning: fopen(C:/tmp/thumbtemp) [function.fopen]: failed to open stream: Permission denied in C:\x on line ZZ
que a fin de cuentas significan que no pueden abrir el directorio temporal, ni crear un archivo temporal en el mismo.
bueno, les dejo los dos links, por si alguien desea adaptarlo al script que hay en esta página, son únicamente 3 o 4 líneas extras, y algunos // para comentar.
http://mx.geocities.com/alvinheregod/galeriaAgregarINC.php
http://mx.geocities.com/alvinheregod/tempthumb.php
se puede poner como comentario el include del tempthumb por si no se quiere crear el thumbnail.
saludos.
alvaro
31 de Octubre de 2006, 10:38:07 pm
excelente tu codigo, me funciona a la perfeccion, realmente te felicito…..
pero tengo una duda, como puedo redimencionar la imagen original y tambien hacer el thumb, necesito establecer las dimenciones de la imagen original para que no me desforme la pagina cuando suban las fotos los usuarios, y a la vez crear el thumb para ponerlos en una galeria… te agradeceria que me ayudaras ya que soy nuevo en esto y estuve haciendo varias pruebas con tu codigo, pero no resulto….
saludos y gracias
Leonardo
29 de Noviembre de 2006, 01:37:08 pm
Me tira un Error en lo siguiente:
Data too long for column ‘foto’ at row 1
que puede ser:::
alex
29 de Noviembre de 2006, 01:40:04 pm
Cambia el tipo de la foto de blob a longblob.
david Quintero
2 de Diciembre de 2006, 11:46:49 am
Profa, es urgente,
después de leer una foto en PHP me sale esto:
Warning: imagegif(): Supplied argument is not a valid resource
No se porque pues bajé un ejemplo y todoest`´a igual, leo un .Gif, lo proceso y ya. Ojalá alguién me pueda ayudar..
alex
3 de Diciembre de 2006, 10:15:17 pm
Verifica si realmente terminó de subir la foto antes de que se ejecute la función imagegif.
Sebastian
4 de Diciembre de 2006, 11:32:50 am
Antes que nada gracias por el codigo, esta muy bien, pero tengo un problema, todo me funciona bien, me inserta ambas imagenes en la db y todo el rollo, pero lo unico que veo que no me funciona es que en la creacion del thumbail me arroja la imagen reducida por el navegador y nunca me muestra la frase “fotos guardadas”, que puede ser.
Saludos, Sebastian.
Mare
5 de Diciembre de 2006, 12:29:19 pm
hola a todos y en especial a quie fomento todo esto, estoy que trato de hacer una pagina donde incerte una imagen cualquiera de donde sea y quien sea, pues encontre esta que me esta ayudando, muy buen articulo, ahora estoy en mi trabajo pues no tengo mi script en el que me muestra el error, lastimosamente no tengo internet en mi casa y aqui en el trabajo pues no puedo. solamente escribia para saludar
Sebastian
12 de Diciembre de 2006, 11:23:37 am
Hola , he utilizaod el codigo y me funciono muy bien para guardar las imagenes en la BD mysql, pero ahora tengo el problema de mostrar; en realidad quiero mostrar todas las imagenes de la BD a la vez,pero cunado trato de modificar el codigo que, muestran en esta página, solo me imprime la primera imagen, y no las demas, alguna sugerencia por favor..
Saludos a Mare….TQM!!!!
alex
12 de Diciembre de 2006, 12:40:06 pm
Sebastian, lee los comentarios anteriores por favor.
Sebastian
13 de Diciembre de 2006, 09:00:53 pm
Hola, sigo teniendo problemas con el script, el error que me da es el siguiente:
Warning: fopen(c:/windows/temp/thumbtemp): failed to open stream: Permission denied.
Estoy probando todo local, pero no logro dar con la tecla, sin embargo esa carpeta existe, que puede estar pasando?
Gracias de antemano.
Sebastian M
alex
14 de Diciembre de 2006, 10:01:01 pm
Que el usuario bajo el que se ejecuta el servidor web no tiene permisos para escribir en
c:/windows/temp/thumbtempMiguel Castillo
18 de Diciembre de 2006, 07:37:15 pm
UN SALUDO
PROBE EL SCRIPT Y DE MANERA LOCAL SI FUNCIONA EL PROBLEMA ES CUANDO LO CORRO EN EL SERVIDOR REMOTO, PONGO LOS ERRORES QUE ME MARCA:
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘c:/windows/temp/thumbtemp’ for writing in /home/compraza/public_html/admin/noticias.php on line 110
Warning: fopen(c:/windows/temp/thumbtemp) [function.fopen]: failed to open stream: No such file or directory in /home/compraza/public_html/admin/noticias.php on line 126
Warning: filesize() [function.filesize]: Stat failed for c:/windows/temp/thumbtemp (errno=2 - No such file or directory) in /home/compraza/public_html/admin/noticias.php on line 127
Warning: fread(): supplied argument is not a valid stream resource in /home/compraza/public_html/admin/noticias.php on line 127
Warning: fclose(): supplied argument is not a valid stream resource in /home/compraza/public_html/admin/noticias.php on line 129
Access denied for user: ‘compraza_demo@localhost’ to database ‘demo’
POR FAVOR SI ME PUDIERAN AYUDAR, EL CODIGO ESTA TAL Y COMO LO MUESTRAN, SOLO CLARO CAMBIANDO EL NOMBRE DE LA BASE DE DATOS
DE ANTEMANO MUCHAS GRACIAS
Gariel
19 de Diciembre de 2006, 11:53:35 am
a mi me funciona muy bien bueno al menos al insertar pero no se como visualizarlas, me podrias ayudar ???
RG
11 de Enero de 2007, 02:22:00 pm
Hola Braulio tu Script esta muy bien hecho..
mi problema es que quiero actualizar pero no me hace nada podrias ayudarme
erik
12 de Enero de 2007, 12:44:05 pm
HOLA, bueno se ve interesant el ejemplo que detallas, lo probe pero no me sale :(, me sale el siguiente error
Fatal error: Call to undefined function imagecreatefromjpeg() in C:\wamp\www\subirimgBD\blob.php on line 35
que no existe tal funcion, si pudieras ayudarme a resolver ese proglema plz, desde ya muchas gracias
erik
12 de Enero de 2007, 01:02:52 pm
asi omita esa funcion me sale nuevamente otro error con una funcion que se encuentra mas abajo
en pocas palabras no me acepta esas funciones q hicist en tu script
los pasos que indicast con el php.ini y el archivo los hice, pero no creo q eso sea el problema, spero puedas ayudarme
alex
12 de Enero de 2007, 01:31:26 pm
Erik, reiniciaste apache luego de habilitar el módulo GD?
erik
12 de Enero de 2007, 02:18:46 pm
sii lo hice, reinici el apache una vez q habilite tal modulo pero me sigue saliendo el mismo error. uhmm a q se debera, no me acepta tales funciones :s
spero puedas encontrarle alguna solucion.GRACIAS
alex
12 de Enero de 2007, 02:47:27 pm
Asegurate de que la versión de esa librería (GD) tenga el soporte para jpg, puedes verlo a través de phpinfo.
erik
12 de Enero de 2007, 11:35:31 pm
hola nuevamente, disculpa que t molesta tanto :$ mira estuve revisando mi phpinfo y no me aparece la tabla de la libreria grafica, agregue el archivo php_gd2.dll, del cual lo descargue de tu web, tbm agregue el nomnre en php.ini, reinicie el apache pero = no me sale la tabla de la libreria grafica, no entiendo porque, supuestament deberia salirme pero nada
a ver si me pudieras ayudar con esto plz
erik
13 de Enero de 2007, 12:08:17 am
quizas sea porque utilizo el php 5.2, el mysql 5, el apache 2.0, ahh y todo esto me vino en un paquete que se llama el wamp 5, quizas sea ese el problema???
Quan
29 de Enero de 2007, 08:52:05 pm
Vaya, me he confundido y he pegado mi post en el articulo equivocado, vuelvo a postearlo aquí, a ver si alguien sabe darme una solución.
———————————————————–
Muy bueno tú código. El caso es que tengo un problema, el server tiene activado el SAFE_MODE con lo cual no puedo ejecutar algunas funciones como fopen(); fread(); fclose()… Me preguntaba si sabrías alguna forma de solucionarlo ya que así, guarda la imagen, pero no puede crear el thumb. Te pasteo la salida por si te sirve de algo.
Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 10067 is not allowed to access /tmp/thumbtemp owned by uid 48 in /home/httpd/vhosts/asordes.org/httpdocs/probas/blob.php on line 68
Warning: fopen(/tmp/thumbtemp): failed to open stream: Success in /home/httpd/vhosts/asordes.org/httpdocs/probas/blob.php on line 68
Warning: filesize(): SAFE MODE Restriction in effect. The script whose uid is 10067 is not allowed to access /tmp/thumbtemp owned by uid 48 in /home/httpd/vhosts/asordes.org/httpdocs/probas/blob.php on line 69
Warning: fread(): supplied argument is not a valid stream resource in /home/httpd/vhosts/asordes.org/httpdocs/probas/blob.php on line 69
Warning: fclose(): supplied argument is not a valid stream resource in /home/httpd/vhosts/asordes.org/httpdocs/probas/blob.php on line 71
Fotos guardadas
Tal vez exista alguna forma de forzar a que se ejecuten estas funciones, o alguna otra forma de crear el thumbnail.
Gracias!!
————————————————————
Se me acaba de ocurrir que ya que el problema está en los thumbs, lo que podría hacer sería crear los thumbs para mostrar la galería a partir de campo blob de la BD.
Sería factible?
Gracias de nuevo!
Luis Parada
31 de Enero de 2007, 09:32:05 am
disculpa pero tu script me da el siguiente problema:
Se ha guardado el Archivo en la base de Datos
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘/home/paradoxl/public_html/uploads’ for writing in /home/paradoxl/public_html/administrador/subir_produc.php on line 102
Fotos guardadas
Warning: imagejpeg() [function.imagejpeg]: Unable to open ‘/home/paradoxl/public_html/uploads’ for writing in /home/paradoxl/public_html/administrador/subir_produc.php on line 166
Fotos guardadas
EL DIRECTORIO TIENE PERMISOS 777 Y NO SUBE, AYUDAME POR FAVOR DE VERDAD LO NECESITO URGENTEMENTE…
alex
31 de Enero de 2007, 10:06:14 am
Quan, no he probado lo que te voy a decir, pero si usas un directorio en el que no se aplique las restricciones safe_mode (ej. /home/httpd/vhosts/asordes.org/httpdocs/probas/thumb/), talvez evites el problema que describes.
Luis, si no hiciste ninguna modificación al script y en verdad tiene los permisos que dices, talvez sea porque tu servidor tiene SELinux activado
Carlos
12 de Febrero de 2007, 12:40:07 pm
Hola amigo,
muy interesante tu articulo, es lo k andava buscando, pero me puedes orientar k va dentro de cada archivo y los nombres k les diste, osea como distibuyes el codigo k ofreces en la pagina, de antemano gracias
elisoft
2 de Marzo de 2007, 09:00:09 pm
tengo un servidor de mysql con miles de imagenes tipo blob, quiero cargarlas en un formulario de .net, pero no puedo ya sea con c# o vb .net, si por favor alguien me puede ayudar….
Roman
21 de Marzo de 2007, 04:19:53 pm
hola a todos, como puedo agregar mas datos para subir??
astrid
26 de Marzo de 2007, 09:59:15 am
hola, bueno yo escribo porque tengo un problemita con este scrip, me sale un error de “Call to undefined function: imagecreatefromjpeg()” de verdad que no tengo idea porque me sale esto, yo tengo instalado el php_gd2.dll y esta activo y todo, pero me sale este error, por favor si alguien me puede ayudar, se lo suplico es urgente, gracias.
astrid
11 de Abril de 2007, 08:26:43 am
hola, gracias por la respuesta, pero realmente no entendi mucho que digamos, en que parte se colocan esas etiquetas, si me puedes responder te lo agradeceria muchisimo.
Fabián
20 de Abril de 2007, 09:31:18 pm
Hola, he leido las respuestas, incluso las más antiguas. A mi me guarda la imagen grande, pero no me guarda el thumb y tengo puesto:
define(”NAMETHUMB”, “/tmp/thumbtemp”);
¿Qué puedo hacer?
también he probado con:
define(”NAMETHUMB”, “c:/windows/temp/thumbtemp”);
y tampoco me funciona.
Lo curioso es que subo la página a un servidor gratuito y si funciona. en la base de datos esa si guarda el thumb.
Alguna idea?
No me da ningún error. solo deja en blanco el thumb.
Gracias!.
Fabián
21 de Abril de 2007, 12:58:48 pm
ok, eso mismo ya lo he podido solucionar yo :D, gracias a dios y despues de muchas vueltas resultaba que tenia el define con una letrita mal jejejeje, tonteria de las grandes.
Ahora mi problema es otro.
Quiero mostrar las miniaturas una al lado de la otra, para que luego al pinchar en ella se muestre la grande. El caso es que solo me muestra 1 foto. Pongo lo que tengo escrito, a ver si podeis echarme una manilla
while ($i
Fabián
21 de Abril de 2007, 01:01:37 pm
while ($i 4) { $idfoto = $i; $tam = 1; switch($tam) { case "1": $campo = "foto";break;; case "2": $campo = "thumb";break;; default: $campo = "foto";break;; } $sql = "SELECT $campo, mime FROM ImgFinal WHERE idfoto = $idfoto"; $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));; mysql_select_db(DBNAME, $link) or die(mysql_error($link)); $conn = mysql_query($sql, $link) or die(mysql_error($link)); $datos = mysql_fetch_array($conn); $imagen = $datos[0]; $mime = $datos[1]; header("Content-Type: $mime", FALSE); echo $imagen; $i++; }a ver si ahora si me sale el código, perdón, estoy algo espesito hoy
En el while sé que falta el símbolo de menor, pero es que si lo pongo no me deja postear el código.
Fabián
21 de Abril de 2007, 01:56:37 pm
como siempre me autorespondo
gracias de todas formas, por si le vale a alguien mi solución es crear un php que haga lo siguiente:
mire cuantas fotos hay en la bd
y repita esta instrucción tantas veces