Foros del Web » Programando para Internet » PHP »

Subida de imágenes con php

Estas en el tema de Subida de imágenes con php en el foro de PHP en Foros del Web. ¡ Hola a todos ! Ante todo es un placer oír vuestras recomendaciones, sin vosotros, muchos de mis "trabajos" hubieran sido mas difíciles si no ...
  #1 (permalink)  
Antiguo 02/01/2009, 15:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
Subida de imágenes con php

¡ Hola a todos ! Ante todo es un placer oír vuestras recomendaciones, sin vosotros, muchos de mis "trabajos" hubieran sido mas difíciles si no imposibles.

Tengo un pequeño problema, a ver si algún gurú de por aquí supiera respondermelo.
El caso es que estoy gestionando una BD con php y mysql.
Los datos se introducen a través de un form e incluyen un nombre y una foto que serán almacenados en la BD. Si, se que no es buena idea meter fotos en un BD pero debo de hacerlo así es un requerimiento.
Bueno ante todo señalar que accedo a la página a través de localhost . El sistema que estoy utilizando es GNU/Linux.

Bien, la foto la inserta cuando utilizo Konqueror ( ya que coge la ruta completa a la imagen) , sin embargo con Firefox la foto no sube.
Os adjunto el código:

FORM:

<form name="inserta" action="insert.php" method="post">
Nombre:<br>
<input type="text" size="30" name="nombre"><br><br>
Archivo de la foto: (opcional)<br>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input type="file" size="35" name="foto"><br><br>
<center><input type="button" onclick="validar()" value="Enviar"></center>
</form>

* Validar solo es un pequeño script que se asegura de que todos los campos estén rellenos, despues llama a submit();

PHP:

$fotnam=$_FILE['foto']['tmp_name'];
$fil=fopen($fotnam,"r");
if ( !$fil )include("error.php");
$foto=addslashes(fread($fil,filesize($fotnam)));
$query="insert into ".$_REQUEST['tabla']."(Nombre,Foto) values('".$_REQUEST['nombre']."','".$foto."')";
$res=mysql_query($query);

Si sustituyo ['tmp_name'] por ['name'] sigue sin funcionar.
Recalco que bajo Konqueror si funciona, pero no con Firefox.
Haciendo un echo el tmp_name y en name, ambos aparecen sin valor ninguno.
Si, php está configurado para permitir subir archivos, me "he asegurado" , si no ¿como es que si funciona en Konqueror?.

¿En qué me estoy equivocando?
Si utilizo is_file_upload sigue sin funcionar.
¡Gracias!
  #2 (permalink)  
Antiguo 03/01/2009, 13:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subida de imágenes con php

Tema trasladado a PHP.

http://www.forosdelweb.com/f21/funci...-datos-413499/
  #3 (permalink)  
Antiguo 03/01/2009, 14:13
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Subida de imágenes con php

Cita:
$fotnam=$_FILE['foto']['tmp_name'];
El array superglobal es $_FILES, no $_FILE.

De donde obtienes el valor de $_REQUEST['tabla']. No lo veo en ninguna parte de tu formulario.

Cita:
Si utilizo is_file_upload sigue sin funcionar.
La funcion se llama: is_uploaded_file().

Prueba imprimiendo la variable $_FILES['foto']['error'], y revisa que valor contiene.
  #4 (permalink)  
Antiguo 05/01/2009, 11:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Subida de imágenes con php

GatorV lo siento, me he equivocado, mil perdones. Como vi Php y después MySQL pues me lié un poco, es lo que tiene el ser despistado.

Ronruby tienes razón es $_FILES no $_FILE, pero eso es un fallo mío al escribirlo aquí ( un despiste malo ), en el script está correcto.
En cuanto a $_REQUEST['tabla'], tabla si está en el formulario, lo que pasa es que este es bastante mas grande y te lo he deducido, quedaría así:

Tabla con la que trabajar:<br><br>
<input type="radio" name="tabla" value="Act"> Act<br>
<input type="radio" name="tabla" value="Busc"> Busc<br>

Eso sería para la parte de la tabla ( solo ).
La función is_uploaded_file, otra vez te doy la razón, hay dias que es mejor no escribir, pero es que no me fui ni al script a mirarlo ( mal hecho lo se )

Sin embargo, si me has aportado una buena solución ( lo demás también te lo agradezco pero en el script está correcto ) lo de $_FILES['foto']['error']

¡ Gracias !
  #5 (permalink)  
Antiguo 16/01/2009, 09:05
 
Fecha de Ingreso: octubre-2008
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Subida de imágenes con php

Bueno, logré solucionar el problema buscando y buscando ... ¡ y lo encontre en un post de este foro !

Ante todo mil perdones por el tiempo pero he estado muy liado. Para que Firefox suba bien las imágenes tan solo hay que añadir en <form> enctype="multipart/form-data" y ¡voila!, esa decir y p.e:

<form name="inserta" action="insert.php" method="post" enctype="multipart/form-data">

Sin embargo, cuando creo los controles del form de forma "automática" con php, eso si que sigue sin funcionar aunque ponga lo anterior, p.e:

echo "<input type=\"file\" name=\"foto".$nom."\"><br><br>";

donde $nom es una letra empezando por la a que irá cambiando según la cantidad de entradas que se generen, puesto que deben ir generandose entradas del form según los resultados de una consulta a mysql y por tanto debemos ir asignando un nombre distinto para cada control del form.
Los parámetros los pasa todos bien, comprobado con get y también visualizados mediante echo los de post, todos menos los de file.
Pues bien, aunque lo haga poniendo como antes el enctype, ¡no funciona! ¿será cosa del php?
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 15:36.