Foros del Web » Programando para Internet » PHP »

problema al subir ficheros al servidor (PHP + Smarty)

Estas en el tema de problema al subir ficheros al servidor (PHP + Smarty) en el foro de PHP en Foros del Web. Hola a tod@s, hace tiempo creé un script para subir imágenes al servidor, y funciona perfectamente. El problema es que ahora trabajo con PHP y ...
  #1 (permalink)  
Antiguo 28/12/2009, 03:43
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 19 años, 11 meses
Puntos: 0
problema al subir ficheros al servidor (PHP + Smarty)

Hola a tod@s,
hace tiempo creé un script para subir imágenes al servidor, y funciona perfectamente. El problema es que ahora trabajo con PHP y Smarty y al hacer lo mismo no funciona.

Si no pongo el atributo
Código:
enctype="multipart/form-data"
dentro de la etiqueta <form> del archivo .html, la variable contiene la imagen seleccionada, pero si lo pongo no contiene nada.

Lo peor de todo es que la variable
Código:
$_FILES['imagen']['name']
del archivo .php siempre está vacía, independientemente de que ponga el 'enctype' o no.

¿Por qué puede ser esto? Teniendo el código PHP y HTML en un mismo archivo funciona bien, pero en dos archivos diferentes no logro hacer que funcione.

Ayudadme, por favor, que estoy a punto de volverme loca.
  #2 (permalink)  
Antiguo 28/12/2009, 04:06
 
Fecha de Ingreso: diciembre-2009
Ubicación: España
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: problema al subir ficheros al servidor (PHP + Smarty)

Hola,

Podrías hacer un var_dump de $_FILES['imagen'], puede que tengas algo en $_FILES['imagen']['error']. También podría ser la carpeta tmp (permisos, etc..), tamaño máximo del fichero (mirar en php.ini)... pero si te funciona poniendo el código en el mismo fichero y cuando lo separas no funciona, lo mejor será que copies el copies aquí el código del FORM y del PHP, así igual vemos que error hay.

Un saludo.
  #3 (permalink)  
Antiguo 28/12/2009, 04:36
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: problema al subir ficheros al servidor (PHP + Smarty)

Muchas gracias gabrielperezs.
He hecho el var_dump() y me muestra NULL.
Pongo sólo el trocito de código que empecé a probar (en el archivo original tengo mucho más, pero si ni siquiera funciona esto es tontería poner más).

Archivo alta_hotel2.html:
Código HTML:
 <body >
<div id="alta">
	<form name="datos" method="post" action="alta_hotel2.php" enctype="multipart/form-data" >
		{if $error!=""}
		<div id="error">{$error}</div>
		{/if}
		
		<div id="controles_tarifas">
			<span class="texto">
				¿Cuántas imágenes desea subir? </span>
				<select class="input2" name="cant" onChange="document.datos.val.value=1;document.datos.fechas.value=num;document.datos.tarifas.value=num2;document.datos.submit();" >
					<option value="">- - -</option>
					<option value="1" {if $cant == 1 } selected="selected" {/if}>1</option>
					<option value="2" {if $cant == 2 } selected="selected" {/if}>2</option>
					<option value="3" {if $cant == 3 } selected="selected" {/if}>3</option>
					<option value="4" {if $cant == 4 } selected="selected" {/if}>4</option> 
				</select>
				{if $cant != ""}
					{assign var="id3" value="1"} 
					{section name=ffi loop=$cant}
						<div id="controles_ventas">
						<br>
						<input type="file" name="imagen{$id3}" size=35 class="input2">
						
						<input type="hidden" name="cant_img" value="{$id3++}" />
						</div>
					{/section}
				{/if}
			<input type="submit" value="grabar">
		</div><!-- controles_tarifas -->
	</form>
</div> <!-- alta -->
</body> 
(con el enctype no muestra nada)

Archivo alta_hotel2.php:
Código PHP:
include_once("global.php");

/** IMÁGENES **/
$smarty -> assign ('cant'$_POST[cant]);
$num3=$_POST[cant_img];
$ruta="fotos/hoteles/";
$flag=0;/*Bandera para controlar los errores (tipo incorrecto, exceso de tamaño, etc)*/
for($i=1;$i<=$num3;$i++){
    
$imagen=$_POST[imagen.$i];
    echo 
var_dump($_POST[imagen.$i]);
    echo 
"<br>".var_dump($_FILES['imagen'])."<br>";
    if (
$_FILES['$imagen']["name"]!="" && $flag==0){ //Si el file no está vacío
        
$archivo $_FILES['$imagen']["tmp_name"]; 
        
$tamanio $_FILES['$imagen']["size"];
        
$tipo    $_FILES['$imagen']["type"];
        
$nombre  $_FILES['$imagen']["name"];
        echo 
$tamanio;
        if(!(
ereg("gif",$tipo) || ereg("png",$tipo) || ereg("jpeg",$tipo))) //Compruebo que la extensión sea .jpg, png ó gif
        
{
            
$error="ERROR: sólo se permiten archivos con extensión .jpg .gif .png.<br>No se ha grabado ninguna imagen en el servidor.<br>
             Corríjalo e inténtelo de nuevo."
;
             
$flag=1;break;
        }else if (
$tamanio 120000){ //Compruebo que el tamaño no sea mayor de 100Ks
            
$error="ERROR: los archivos deben de ser menores de 100Kb.<br>No se ha grabado ninguna imagen en el servidor.<br>
             Corríjalo e inténtelo de nuevo."
;
            
$flag=2;break;
        }
    }else{
        
$error="ERROR: no foto.";
    }
    
}


$smarty -> assign ('error'$error);

$smarty->display('alta_hotel2.html'); 
Muchas gracias, de verdad, porque lo cierto es que estoy empezando a desesperame. He probado todo lo que sé y nada.
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:14.