Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2006
Avatar de CARLOS E
CARLOS E CARLOS E is offline
Miembro
 
Registrado: may 2006
Posts: 11
Poder: 0
CARLOS E Va por buen camino
Question Envio De Imagenes

Hola, tengo la siguiente duda:
TRABAJO CON PHP EN LA VERSION 4.4
necesito almacenar en mi base de datos en mysql las imagenes que me sean enviadas desde la pagina del cliente, para esto hice unas paginas de Prueba, una donde se carga la imagen "guardar.php" y otra donde muestra el resultado de la carga "resul_img.php" con en siguente codigo:

guardar.php
Código PHP:
<html>
<
body>
<
form ENCTYPE="multipart/form-data" action="resul_img.php" method="POST">
<
input type="hidden" name="MAX_FILE_SIZE" value="1000000000">
<
INPUT NAME="userfile" TYPE="file">
<
p><input type="submit" value="Enviar">
</
form>
</
body>
</
html
resul_img.php
Código PHP:
<html>
<body>
<? 
$link
=mysql_connect("localhost","root","");
mysql_select_db("bdregistros",$link);
echo 
"<BR>".$userfile//nombre del archivo de la imagen temporal
echo "<BR>".$userfile_name//nombre del archivo
echo "<BR>".$userfile_size//tamaño
echo "<BR>".$userfile_type//tipo
if ( $userfile!="none" && $userfile!="")
{
if (
$userfile_type=="image/jpeg" || $userfile_type=="image/pjpeg" || $userfile_type=="image/gif" || $userfile_type=="image/bmp")
{
$info=getimagesize($userfile);
echo 
"<BR>".$info[0]; //anchura
echo "<BR>".$info[1]; //altura
echo "<BR>".$info[2]; //1-GIF, 2-JPG, 3-PNG
echo "<BR>".$info[3]; //cadena de texto para el tag <img
$x=addslashes(fread(fopen($userfile,"r"),filesize($userfile)));
$result=mysql_query("INSERT INTO imagenes (id_img,anchura,altura,tipo,imagen) VALUES ('0'".$info[0].",".$info[1].",'$userfile_type','$x')",$link);
$id=mysql_insert_id();
echo 
"Imagen agregada con el id ".$id."<BR>";
}else{
$error="El tipo de archivo tienes que ser JPG, GIF o BMP.";
}
}else{
$error="No ha seleccionado ninguna imagen...";
echo 
$error;
}
mysql_close($link);
if (
$error!="")
{
echo 
"</center><P><font face='Arial' size=2 color='#ff0000'> Error: ".$error."</font><br>";
}
?>
</body>
</html>
Este codigo lo he copiado y adaptado a mi base de datos.

Me indica en la pagina de resultado que no he seleccionado ninguna imagen.

¿A que podria deberse que ni siquiera me imprime los valores de la variables $userfile_xxx ?. por que no se pasan los atributos de "userfile" desde la pagina guardar.php?

¿Es correcto que el campo de la tabla donde guardo la imagen sea de tipo longblob?


Agradeceria su respuesta pues soy nuevo en esto...
Responder Con Cita
  #2  
Antiguo 20-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
¿A que podria deberse que ni siquiera me imprime los valores de la variables $userfile_xxx ?. por que no se pasan los atributos de "userfile" desde la pagina guardar.php?
Ayer o anteayer tuve que repasar el Manual de manejo de envío de archivos con PHP. Creo que en ese documento tienes la solución a tu problema, al menos para lo que toca a que no recibas información en las variables "$userfile_xxx".

Es posible que la directiva "register globals" de PHP esté desactivada y por eso no puedas acceder a esas variables, o, por mejor decir, esas variables no contienen la información que precisas.

En su lugar, según el manual hay que utilizar el "Array global" "$_FILES". Porque además tienes que tener en cuenta que la directiva "register globals" no se recomienda que esté activada.

Yo creo que echando un vistazo al documento susomentado no tendrás problemas para continuar adelante. Fíjate en el uso de la función "is_uploaded_file", que puede serte de utilidad en estos casos.

Yo te pongo aquí un poco de código de unas pruebas que hize ayer o anteayer, pero, no dejes de revisar este ejemplo que te propone el manual, y observa cómo puede averiguarse, con la función "is_uploaded_file", un posible intento de "entrada maliciosa" en nuestro sitio Web.

Código PHP:
/* In PHP 4.1.0 or later, $_FILES should be used instead of $HTTP_POST_FILES.
*/
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']))
{
  
copy($HTTP_POST_FILES['userfile']['tmp_name'], "/place/to/put/uploaded/file");
}
else
{
  echo 
"Possible file upload attack. Filename: " $HTTP_POST_FILES['userfile']['name'];

A continuación mi aportación de código, recogido de las pruebas de ayer o anteayer y adaptado ("userfile") al formulario que tratas de utilizar, y que por cierto no parece ser el problema, dicho sea de paso:

Código PHP:
if (@is_uploaded_file($_FILES['userfile']['tmp_name']))
{    
  
$nombre  $_FILES['userfile']['name'];
  
$tipo    $_FILES['userfile']['type'];
  
$tamano  $_FILES['userfile']['size'];
  
$rutatmp $_FILES['userfile']['tmp_name'];
  
  
/* En este caso recuperamos el contenido del archivo
     por supuesto que aquí tú podrías hacer con el archivo
     lo que te fuera oportuno, no sólo leer su contenido
  */
  
$contenido file_get_contents($rutatmp);  

  
/* Y acto seguido lo borramos, si damos con él
  */
  
if(file_exists($rutatmp)) unlink($rutatmp); 

Bueno. Creo que ya es bastante, y hasta demasiado, a ver si puedes solucionar el problema de la subida de archivos. Por otro lado... respecto del campo "LongBlob" en la base de datos, para albergar imágenes, lo cierto es que no pasé del campo "Blob" nunca, y no tengo experiencia en estos temas.

No sé si incluso sería mejor almacenar los archivos de imagen en el disco duro y no en una base de datos, pero, en todo caso, aquí te dejo un enlace en donde se trata lo que tratas tú de llevar a cabo: subir, guardar y mostrar imágenes con PHP y MySQL.

- Mostrar una imagen desde un campo "blob"
- Guardar una imagen en una base de datos

Ya dirás qué tal te fue con el tema.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 23-05-2006
Avatar de CARLOS E
CARLOS E CARLOS E is offline
Miembro
 
Registrado: may 2006
Posts: 11
Poder: 0
CARLOS E Va por buen camino
Thumbs up Tankss!!

Problema Solucionado !! Muy buena la explicacion...

Muchas graciass!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Envio de SMS Davord Internet 3 24-08-2007 19:14:59
Envio de SMS kes Varios 5 29-04-2005 19:21:33
Forzar envio a DB jollodel Varios 3 28-04-2005 14:47:51
envio por fax acertij022 Varios 0 02-06-2004 15:31:05
Envio de Fax auribe Varios 1 26-06-2003 19:20:46


La franja horaria es GMT +2. Ahora son las 09:19:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi