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); }
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_final= uniqid(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);