Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2009, 04:42
kikeking1
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 11 meses
Puntos: 17
input file dinamico con nombre dinamico - foto[] - Problema en firefox

Saludos a la Comunidad.

Bueno mi problema es el siguiente. Tengo el tipico script para crear input de tipo file de forma dinamica, para que asi se suba exactamente los archivo que el usuario quiere subir. El codigo (a continuacion) funciona perfectamente en IE8 (si alguien tiene la oportunidad de probarlo en alguno anterior se lo agradeceria) pero en firefox el array que deberia contener los archivos, me aparece vacio.

No estoy seguro si el problema viene de php (si fuera asi agradeceria que se cambiara el tema al sector indicado) o de la creacion dinamica por Javascript.

Desde mi opinion y juzgando que en ie8 funciona sin problemas, pienso que debe ser la forma en la que especifico el nombre al elemento en javascript.

He buscado informacion y basandome en la logica (nombre[] en php deberia entenderlo como array) pero no encontre nada que me ayudase.

Aqui os dejo el codigo javascript:

Código HTML:
function addCampo() { 

   nDiv = document.createElement('div');
   nDiv.className = 'text3';
   nDiv.id = 'file' + (++numero);
   nCampo = document.createElement('input');
   nCampo.setAttribute('name','foto_inmueble[]');
   nCampo.setAttribute('type','file');
   nCampo.setAttribute('class','text3');
   nCampo.name = 'foto_inmueble[]';
   nCampo.type = 'file';
   nCampo.className = 'text3';
   nCampo.onchange = function() {if(this.value!=''){addCampo();}};
   a = document.createElement('a');
   a.setAttribute('class','text');
   a.setAttribute('name',nDiv.id);
   a.setAttribute('href','#');
   a.className = 'text';
   a.name = nDiv.id;
   a.href = '#';
   a.onclick = elimCamp;
   a.innerHTML = '[x]';
   nDiv.appendChild(nCampo);
   nDiv.appendChild(a);
   container = document.getElementById('adjuntos');
   container.appendChild(nDiv);
}
aqui el php:
Código PHP:
 for ($i=0$i<INMNUMFOT 1$i++)
            {
            
$foto_actual "foto_inmueble";
            
$comentario_actual "comentario_foto".$i;
            
$foto $_FILES[$foto_actual]['tmp_name'][$i];
            
$foto_name $_FILES[$foto_actual]['name'][$i];
            
$foto_type $_FILES[$foto_actual]['type'][$i];
            
$foto_size $_FILES[$foto_actual]['size'][$i];
            
print_r($_FILES);
            
$subida subir_imagen$foto$foto_name$foto_size$foto_type$_POST[max] ,DIRECTORIOIMAINM$UPL1[$_SESSION['idioma']]); 

aqui la funcion subir
Código PHP:
function subir_imagen($fichero$fichero_name,$fichero_size,$fichero_type,$max,$directorio$menerr)
    {
    if(empty(
$fichero_name) )
         {
         
$result[]= "nada";
         return 
$result;
         } else {

         if ((
$fichero_size $max) && (($fichero_type=="image/gif") || ($fichero_type=="image/jpeg") || ($fichero_type=="image/pjpeg") || ($fichero_type=="image/x-png") || ($fichero_type=="image/bmp") ))
             {
             
$extension substr($fichero_name,-4);
             
$nombre_finaluniqid(time()).$extension;

             if(
move_uploaded_file($fichero $directorio $nombre_final))
                {
                
$result[]= "subida";
                
$result[]= $nombre_final;
                return 
$result;
                }

             } else {
             
$peso$max/1024/1000;
             
$result[]= "error";
             
$result[]= $menerr." ".$peso." Mb.";
             return 
$result;
             }
         }
     } 

Pd. (el codigo php, el for se cierra mas adelante, lo que pasa que hago trecientas cosas en base de datos.. pero eso son inconcluyente para el error que os digo)
Pd. (El aray que me devuelve el firefox es array() en ie si me viene lleno);