Foros del Web » Programando para Internet » PHP »

Imagenes cargadas con formulario generado en PHP no se ven

Estas en el tema de Imagenes cargadas con formulario generado en PHP no se ven en el foro de PHP en Foros del Web. Tengo un formulario que creo dinámicamente, este es el código: Código PHP: echo  '<table align="center" width="95%" class="' . $TipoMenu . '" border ="01" cellpadding="1" cellspacing="1"> <tr> <td class="' . $TipoMenu . '" align="center"> <form enctype="multipart/form-data" name="nuevousuario" method="post" action="' ...
  #1 (permalink)  
Antiguo 17/10/2005, 11:37
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
Imagenes cargadas con formulario generado en PHP no se ven

Tengo un formulario que creo dinámicamente, este es el código:

Código PHP:
echo '<table align="center" width="95%" class="'.$TipoMenu.'" border
="01" cellpadding="1" cellspacing="1"> <tr>
<td class="'
.$TipoMenu.'" align="center">
<form enctype="multipart/form-data" name="nuevousuario" method="post" action="'
.$EstePrograma.'"><center><p><span 
class="contenido"><br><b>Para agregar un alumno, llene los datos 
que se solicitan y presione el bot&oacute;n "Grabar"</b></span></p>
<table width="100%" border="0" align="center" cellpadding="0" 
cellspacing="0"><tr><td><p align="right"><span 
class="contenido">Matr&iacute;cula del alumno (hasta 20 
letras):</span></td><td><input name="matricula" type="text" id
="idusuario" SIZE=20 MAXLENGTH="20" value="'
.$DatoAlumnoMatricula.'">
</td></tr><tr><td colspan="2" height="2"> </td></tr><tr><td>
<p align="right"><span class="contenido">Nombre del alumno (hasta 80
 letras):</span></td><td><input name="alumnonombre" type
="text" id="idalumnonombre" SIZE=60 MAXLENGTH="80" 
value="'
.$DatoAlumnoNombre.'"></td></tr><tr><td><p align="right">
<span class="contenido">email del alumno (hasta 80 letras):</span></td><td><input name="alumnoemail" type
="text" id="idalumnoemail" SIZE=60 MAXLENGTH="80" value="'
.$DatoAlumnoEmail.'"></td></tr><tr><td><p align="right">
<span class="contenido">usuario del Tutor 1:</span></td><td><input name="alumnotutor1" type="text" id="idalumnotutor1" SIZE=20
 MAXLENGTH="20" value="'
.$DatoAlumnoTutor1.'"></td></tr><tr><td>
<p align="right"><span class="contenido">usuario del Tutor 2:</span></td><td><input name="alumnotutor2" type="text" 
id="idalumnotutor2" SIZE=20 MAXLENGTH="20" value="'
.$DatoAlumnoTutor2.'"></td></tr><tr><td><p align="right">
<span class="contenido">Fotograf&iacute;a del alumno
 (m&aacute;ximo 8kb):</span></td><td><input type="hidden" name="MAX_FILE_SIZE" value="8192" /><input type="file"
 name="alumnofoto" style="width:375px" /></td></tr><tr><td>
<p align="right"><span class="contenido">Grado al que asiste el alumno:</span></td><td>'
.$OpcionesDeGrado.'</td></tr><tr>
<td colspan="2" height="7"> </td></tr><tr align="center">
<td colspan="2"><br>&nbsp;<br><input name="grabardatosusuario"
 type="submit" id="idgrabardatosusuario" value="Grabar"></td></tr></table></center>
</form></td></tr></table>'

luego, cuando se envía un archivo (una foto), lo proceso de esta manera:

Código PHP:
$DatoAlumnofoto=$_FILES['alumnofoto']['name']; 
move_uploaded_file($_FILES['alumnofoto']['tmp_name'],
 
$_SERVER['DOCUMENT_ROOT'].'/imagenes/fotosalumnos/'.$_FILES['alumnofoto']['name']); 
No hay error, aparentemente todo bien, pero luego, al hacer esto:

Código PHP:
echo'<br>&nbsp;<br><center><img src="imagenes/fotosalumnos/'.$DatoAlumnofoto.'"></center>'

No se ve la imagen.

Si descargo la imagen a mi PC puedo ver que la imagen está íntegra.

Si subo la imagen con un cliente de FTP el problema no ocurre, la imagen se ve bien.

Los permisos de la carpeta estaban originalmente en 755, ya pasé por 775 y hasta 777 y nada de nada, la imagen no se ve.

¿qué opinan?
  #2 (permalink)  
Antiguo 17/10/2005, 13:14
 
Fecha de Ingreso: octubre-2005
Mensajes: 1
Antigüedad: 12 años, 1 mes
Puntos: 0
lo que tenes que hacer es sacar las comillas "
<img src="imagenes/fotosalumnos/'.$DatoAlumnofoto.'">
kedaria asi
<img src=imagenes/fotosalumnos/'.$DatoAlumnofoto.'>
  #3 (permalink)  
Antiguo 17/10/2005, 14:09
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
Pues no, las comillas no son.


Tal como había mencionado antes, si DESCARGO la imagen con FTP la veo bien en mi PC. Es como si la imagen en el servidor web estuviera dañada, porque incluso al generar aparte un archivo HTML para probar, la imagen no se ve.

Es como si el archivo se dañara al subirlo con php. Repito, si la imagen la subo con un cliente FTP se ve muy bien.

Puedo dilucidar que el problema está al subir la imagen. Pero hasta ahí llego.

¿qué será? ¿qué será? ¿qué será?
  #4 (permalink)  
Antiguo 17/10/2005, 14:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
TortugaChat

Realmente te aclaras con:

Código PHP:
echo '<table align="center" width="95%" class="'.$TipoMenu.'" border 
="01" cellpadding="1" cellspacing="1"> <tr> 
<td class="'
.$TipoMenu.'" align="center"> 
<form enctype="multipart/form-data" name="nuevousuario" method="post" action="'
.$EstePrograma.'"><center><p><span 
class="contenido"><br><b>Para agregar un alumno, llene los datos 
que se solicitan y presione el bot&oacute;n "Grabar"</b></span></p> 
<table width="100%" border="0" align="center" cellpadding="0" 
cellspacing="0"><tr><td><p align="right"><span 
class="contenido">Matr&iacute;cula del alumno (hasta 20 
letras):</span></td><td><input name="matricula" type="text" id 
="idusuario" SIZE=20 MAXLENGTH="20" value="'
.$DatoAlumnoMatricula.'"> 
</td></tr><tr><td colspan="2" height="2"> </td></tr><tr><td> 
<p align="right"><span class="contenido">Nombre del alumno (hasta 80 
letras):</span></td><td><input name="alumnonombre" type 
="text" id="idalumnonombre" SIZE=60 MAXLENGTH="80" 
value="'
.$DatoAlumnoNombre.'"></td></tr><tr><td><p align="right"> 
<span class="contenido">email del alumno (hasta 80 letras):</span></td><td><input name="alumnoemail" type 
="text" id="idalumnoemail" SIZE=60 MAXLENGTH="80" value="'
.$DatoAlumnoEmail.'"></td></tr><tr><td><p align="right"> 
<span class="contenido">usuario del Tutor 1:</span></td><td><input name="alumnotutor1" type="text" id="idalumnotutor1" SIZE=20 
MAXLENGTH="20" value="'
.$DatoAlumnoTutor1.'"></td></tr><tr><td> 
<p align="right"><span class="contenido">usuario del Tutor 2:</span></td><td><input name="alumnotutor2" type="text" 
id="idalumnotutor2" SIZE=20 MAXLENGTH="20" value="'
.$DatoAlumnoTutor2.'"></td></tr><tr><td><p align="right"> 
<span class="contenido">Fotograf&iacute;a del alumno 
(m&aacute;ximo 8kb):</span></td><td><input type="hidden" name="MAX_FILE_SIZE" value="8192" /><input type="file" 
name="alumnofoto" style="width:375px" /></td></tr><tr><td> 
<p align="right"><span class="contenido">Grado al que asiste el alumno:</span></td><td>'
.$OpcionesDeGrado.'</td></tr><tr> 
<td colspan="2" height="7"> </td></tr><tr align="center"> 
<td colspan="2"><br>&nbsp;<br><input name="grabardatosusuario" 
type="submit" id="idgrabardatosusuario" value="Grabar"></td></tr></table></center> 
</form></td></tr></table>'

Por qué no abres y cierras PHP <? .. ?> donde realmente uses PHP .. Incluso verías si usas algún editor "visual" de HTML como Dreamweaver como queda ese HTML que ahí tienes .. no tendrías prolemas con comillas simples y dobles .. menos concatenaciones .. más legible en general el código.


------------------

Sobre los problemas con la imagen .. primero asegurate que está en el URL que vinculas. Si la imagen dices que llegó al servidor es por qué ya usastes los permisos de escritura del archivo necesarios.

Compara los tamaños de tu imagen original y lo que tienes en el servidor. Revisa su peso .. tienes limitaciones en tu código expresamente "MAX_FILE_SIZE" a 8 kb según dices .. Que tipo de imagen usas para tus pruebas?

Un saludo,
  #5 (permalink)  
Antiguo 17/10/2005, 15:11
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola Cluster, gracias por tu tiempo,

mira, el código sí que lo tengo entre <?php y ?>, y de hecho sí uso el DreamWeaver para todos mis proyectos. Tienes razón en lo que comentas sobre los permisos, como dije, inicialmente los tenía en 755 y la imagen se envió y recibió muy bien, el tamaño es el adecuado, así como el tipo (image/pjpeg o image/gif) bien identificados. Incluso tengo en código la validación del tamaño, adicional a la del formulario, así como otras validaciones, como la longitud del nombre, que no exceda de 20 para poder guardarlo en la base de datos. Con el uso de las comillas simples y dobles, realmente no tengo problemas, bien dominado ese detallito, pues, al menos creo en este código no hay ese problema. A menos que me esté cegando mi propio código. La vinculación al archivo es la correcta, por eso es que más me extraña. Incluso tengo abierto al mismo tiempo el WS_FTPPro para ver el contenido de la carpeta y puedo ver que la imagen está allí.

Sin embargo....no se ve!

Esta es la validación que hago sobre el archivo y por cierto, si subo un archivo que no cumple los requisitos no lo acepta, es decir, las características del archivo las detecta bien.

Código PHP:
if ($_FILES['alumnofoto']['tmp_name']<>'')
            
//La variable tmp_name contiene algo
            
{
            
//Se ha cargado un archivo, hacer lo conducente
            
if($_FILES['alumnofoto']['size']>"8192")
                {
                
$MensajeErrorCaptura=$MensajeErrorCaptura.'El tamaño de la fotograf&iacute;a excedel el l&iacute;mite permitido (8kb).<br>&nbsp;<br>';
                
$DatoAlumnofoto='';
                }
            if(
$_FILES['alumnofoto']['type']<>'image/gif' && $_FILES['alumnofoto']['type']<>'image/jpeg' && $_FILES['alumnofoto']['type']<>'image/pjpeg')
                {
                
$MensajeErrorCaptura=$MensajeErrorCaptura.'El archivo que proporcion&oacute; no es del tipo adecuado para una fotograf&iacute;a.<br>&nbsp;<br>';
                
$DatoAlumnofoto='';
                }
            if(
strlen($_FILES['alumnofoto']['name'])>20)
                {
                
$MensajeErrorCaptura=$MensajeErrorCaptura.'El nombre de archivo de la fotograf&iacute;a es demasiado largo (m&aacute;ximo 20).<br>&nbsp;<br>';
                
$DatoAlumnofoto='';
                }
            }
//Termina la rutina de la variable tmp_name contiene algo 
¿qué será? ¿qué será? ¿qué será?
  #6 (permalink)  
Antiguo 17/10/2005, 18:58
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
move_uploaded_file

Tal como lo sospechaba, el problema estaba al subir el archivo.

Concretamente, y por si le sirve a alguien, al subir el archivo, si no se utiliza la función "is_uploaded_file", no se debe usar el "move_uploaded_file".

O al menos en mi caso, yo no usaba el "is_uploaded_file", y pretendía mover el archivo usando "move_uploaded_file". Lo que hice fue SUSTITUIRLO POR "copy" y listo. La imagen queda bien y se ve al instante.


Saludos y gracias por su valiosa ayuda.
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 20:56.