Foros del Web » Programando para Internet » PHP »

subir imagenes con formulario

Estas en el tema de subir imagenes con formulario en el foro de PHP en Foros del Web. Hola maestros. Tengo un formaulario con el que doy la opción de subir tres archivos .jpg a una carpeta que tengo en mi servidor. La ...
  #1 (permalink)  
Antiguo 16/09/2004, 12:23
Avatar de roninrojo  
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 0
subir imagenes con formulario

Hola maestros. Tengo un formaulario con el que doy la opción de subir tres archivos .jpg a una carpeta que tengo en mi servidor. La dirección del archivo la guardo en una base de datos y luego con otro programa .php leo esa dirección para mostrar la imagen en una web. Todo parece funcionar correctamente, pues el archivo llega a la carpeta y la dirección se gurada bien en la BD. Pero me ha surgido un error bastante inusual, y es que el programa que lee la dirección y muestra el archivo .jpg no lo hace correctamente sino que muestra la tipica [X] como si el archivo se hubiera perdido, pero no, el archivo está y la dirección que lee es correcta. Lo sé porque funciona con algunas imegenes y con otras no. Así que estoy un poco desconcertado y agredecería cualquier consejo o sugerencia sobre a que puede deberse el error.
Si hace falta que ponga el código lo pongo, pero es que es bastante extenso porque trata bastantes variables.
Muchas gracias por adelantado.
__________________
www.albertocarazo.com
  #2 (permalink)  
Antiguo 16/09/2004, 13:14
Avatar de AJVEvoluzione  
Fecha de Ingreso: agosto-2004
Ubicación: Buenos Aires
Mensajes: 195
Antigüedad: 13 años, 3 meses
Puntos: 1
No se por que parte estas pero a lo mejor el error es algo simple... puede ser que el servidor difernecie entre *.jpg *.JPG *.jpeg , no se fijate a lo mejor es eso, yo hice eso mismo pero con formatos JPG y gif y me anda bien
  #3 (permalink)  
Antiguo 17/09/2004, 01:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si pones el código que usas por lo menos para leer esa información de tu BD y generar esos tag de imagen o llamadas al script que las obtenga .. sería lo ideal.

Un saludo,
  #4 (permalink)  
Antiguo 17/09/2004, 06:30
 
Fecha de Ingreso: julio-2002
Mensajes: 54
Antigüedad: 15 años, 4 meses
Puntos: 0
yo estoy haciendo lo mismo y tengo justo el mismo problema.
__________________
:ojotes: davicillo :ojotes:
¡¡¡¡LoOkInG fOr fReEdOm!!!!
  #5 (permalink)  
Antiguo 17/09/2004, 10:24
Avatar de Willjce  
Fecha de Ingreso: diciembre-2003
Ubicación: Lima - Peru
Mensajes: 67
Antigüedad: 14 años
Puntos: 0
como es tu codigo para llamar a los archivos de imagen? pero tambien debes saber que el servidor diferencia entre minusculas y mayuscula, por ejemplo si el nombre del archivo.JPG no es igual con archivo.jpg ok....

saludos...
__________________
Cita:
El éxito se alcanza convirtiendo cada paso en una meta y cada meta en un paso :pensando:
Att...
Tu amigo Willy... :aplauso:
  #6 (permalink)  
Antiguo 20/09/2004, 14:02
Avatar de roninrojo  
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 0
Hola de nuevo maestros. Muchas gracias por las respuestas y perdonad que responda con tanto retraso.
Bien, pondré parte del código a ver si detectaís algún error que se me haya escapado.
Esta es la función (muy conocida) que utilizo un vez es enviado el formulario para validar la extensión de los archivos.

Código PHP:
function validar_archivo($nombre_archivo,$tipo_archivo,$tamano_archivo)
{

//compruebo si las características del archivo son las que deseo
    
if (strpos($tipo_archivo"jpg") || strpos($tipo_archivo"jpeg"))
    {
        if( 
$tamano_archivo 150000){
        
$msj "El archivo ".$nombre_archivo." es demasiado grande. Se permiten 150Kb de tamaño como máximo";
        return 
'<br>'.$msj.'<br>';
        }
    }else{
    
$msj "la extensión del archivo ".$nombre_archivo." no es correcta.<br>Solo se permiten archivos .jpg o .jpeg";
    return 
'<br>'.$msj.'<br>';
    }

Luego utilizo esta otra para subir el archivo al servidor, que aparentemente funciona bien...
Código PHP:
function subir_archivo($nombre,$temporal)
{
    
$ruta 'imagenes/fotos/';
    
$path $ruta.$nombre;
    if (!
move_uploaded_file($temporal$path))
    {
         
$msj "Ocurrió algún error al subir el aechivo ".$nombre.". No pudo guardarse.";
        return 
$msj;
    }

Y luego este es parte del código que se encarga de leer la dirección del archivo de la base de datos y generar el tag correspondiente. He mirado el código fuente una vez se ha generado y se escribe correctamente, así que no se...

Código PHP:
$sql = "SELECT * FROM ".$tb_inm." WHERE id_cliente = '".$id_cliente."'";
$result = mysql_query($sql,$conn);
$fila = mysql_fetch_object($result);

?>
<br>
<br>
<br>
<table align="center" height="210" cellspacing="5" id="tablaGris">
<tr>
<td rowspan="4" bgcolor="#F2F2F2">
<a href="#" onClick="window.open('<?php echo $fila->foto_1 ?>','popup','width=800,height=600,scrollbars=1')"><?php if(($fila->foto_1) != '') echo "<img border='0' src='".$fila->foto_1."' width='100' height='70'";  ?></a><br>
<a href="#" onClick="window.open('<?php echo $fila->foto_2 ?>','popup','width=800,height=600,scrollbars=1')"><?php if(($fila->foto_2) != '') echo "<img border='0' src='".$fila->foto_2."' width='100' height='70'";  ?></a><br>
<a href="#" onClick="window.open('<?php echo $fila->foto_3 ?>','popup','width=800,height=600,scrollbars=1')"><?php if(($fila->foto_3) != '') echo "<img border='0' src='".$fila->foto_3."' width='100' height='70'";  ?></a>
</td>
¿Podría ser que se perdiese información en la transferencia de datos al enviar el formulario al ser muy pesado? Teorías paranoícas mias...

Muchas gracias por cualquier tipo de ayuda, sugerencia o comentario que me podaís dar maestros.
__________________
www.albertocarazo.com
  #7 (permalink)  
Antiguo 21/09/2004, 05:48
Avatar de roninrojo  
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 0
¿Alguna sugerenciaaaa?
Graciasss!
__________________
www.albertocarazo.com
  #8 (permalink)  
Antiguo 21/09/2004, 13:07
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Saludos.

Se me ocurre preguntar:

Estas subiendo las imagenes y luego actualizando una tabla con el nombre del archivo de esa imagen??

Que es lo que te traes de la consulta que haces??



Verifica:

1) Que efectivamente las imagenes estan subiendo. Conectate via FTP y resiva si estan en la carpeta que tu dices y si se llaman como tu dices.

2) Verifica el CHMOD de las imagenes. Deben estar en mínimo 644.

De no tener ese CHMOD entonces al subir tus imagenes deberías modificarlo con PHP luego de subirlas.

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 21/09/2004 a las 13:09
  #9 (permalink)  
Antiguo 22/09/2004, 06:14
Avatar de roninrojo  
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 0
Gracias José por contestar.

Lo que hago es justo lo que me preguntas, primero subo los archivos de las imagenes a una carpeta, guardo la ruta de esta carpeta en mi base de datos y luego actualizo una tabla con la ruta y el nombre de archivo correpondiente.
Lo que traigo de la consulta, $fila->foto_1, corresponde a la ruta guardada, es decir por ejemplo: imagenes/fotos/nombreImagen.jpg

He comprobado los dos puntos que me comentas y todo es correcto, pero me ha surgido una duda: ¿Influye entonces el CHMOD de las carpetas donde estan ubiados los archivos? El CHMOD de mis carpetas es 775, supongo que no hay problema en eso por que da casi todos los permisos, pero ya no se...
¿Que me podeis decir?
__________________
www.albertocarazo.com
  #10 (permalink)  
Antiguo 22/09/2004, 10:33
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
El permiso de la carpeta te deja o no guardar las imágenes (entre otros) pero el permiso de los archivos te dejo o no verlos por el navegador (entre otros)

Seguro que tus fotografías tienen un CHMOD superior a 644 ?? cada una de las fotografías??

Coloca el path completo en el navegador y ve si carga la imagen.
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #11 (permalink)  
Antiguo 23/09/2004, 06:38
Avatar de roninrojo  
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 0
He hecho unas pruebas en dos servidores diferentes, en los dos he copiado archivos y base de datos:

En el primero pongo la ruta entera en el navegador y me da Error 403, si pongo la ruta de la carpeta me da error 404... eso ya me dice mucho porque en el segundo pongo la ruta entera en el navegador y me muestra la imagen, si pongo la ruta de la carpeta me muestra la raiz del sitio y sus archivos. Esta calro que es cuestion de permisos, pero no se como solucionarlo. ¿Cómo lo hago?
Muchisimas gracias por tu ayuda José!
__________________
www.albertocarazo.com
  #12 (permalink)  
Antiguo 23/09/2004, 08:05
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Ok, debes conectarte por FTP a tu site.

Luego te paras sobre la carpeta en cuestión y le das botón derechoa al mouse. Hay una opción que dice CHMOD. Le das click.

Te mostrara una pantalla con por lo menos 6 checkbox. MArcalos todos y le das OK o Aplicar.

Eso debería ser suficiente.

Pero te recuerdo que eso lo vas hacer con las carpetas y con una que otra imagen.

Para colocar el CHMOD a los archivos que subes por la aplicación, debes modificarles el CHMOD una vez que eten arriba con el mismo php. Búscate la función en www.php.net

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #13 (permalink)  
Antiguo 24/09/2004, 04:53
Avatar de roninrojo  
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 0
Uff... bueno creo que la solución va a ser hablar con los responsables del servidor ya que no me dejan cambiar los permisos por FTP. De todas maneras creo que debe ser una política del servidor el que no permita ver la raiz de archivos, ya que en el otro no hay problemas y tiene casi los mismos permisos en el CHMOD de las carpetas.
Gracias por tu ayuda José :)
__________________
www.albertocarazo.com
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 21:08.