Me respondo a mi mismo.
Al final ha funcionado creando un iframe dinámicamente, el caso es que al principio también me cargaba una nueva página pero he encontrado una cosilla por internet que ha funcionado:
el formulario no es nada del otro mundo:
Código HTML:
<form name="formulario" enctype="multipart/form-data" action="uploader.php" method="post" class="formulario" onSubmit="return submitForm(this);">
Titulo: <input name="titulo" id="titulo" size="40" value="{$titulo}" maxlength="255" />... y otros campos.
...</form>
...Un javascript para crear files dinámicamente con un li. Hay un montón de cosas por internet y no recuerdo de dónde lo saqué:
Código:
function addFile() {
var li = document.createElement('li');
li.setAttribute('id', 'file-' + gFiles);
li.setAttribute ('style', 'width:95%;');
li.innerHTML = '<span id="liinput-'+ gFiles +'"><input type="file" size="32" name="file[]" onchange="return styleFile(this, '+gFiles+');"></span><div id="lilink-'+ gFiles +'" class="filestyle" style="display:none"></div><a href="#nogo" class="botonmini" onclick="removeFile(\'file-' + gFiles + '\','+ gFiles +')">x</a>';
document.getElementById('files-root').appendChild(li);
gFiles++;
countFiles++;
if(countFiles>=maxfiles) document.getElementById('anadir').disabled=true;
document.getElementById('countFiles').innerHTML=countFiles;
}
al final de la validación del formulario creo el iframe y lo meto en el div, esto es de st-on-it.blogspot.com/2009/06/dynamic-iframes-as-form-targets.html
Código:
iframeId++;//empieza con valor 0
nuevoIframeId= iframeId.toString();//esto se lo he visto a caricatos, pero no sé si hace falta....
iframediv=document.getElementById('subidor_iframe_div');
iframediv.innerHTML = '<iframe id="subidor_iframe'+nuevoIframeId+'" name="subidor_iframe'+nuevoIframeId+'"></iframe>';
//estas dos líneas son las interesantes
var iframe = document.getElementById('subidor_iframe'+nuevoIframeId);
formulario.target = iframe.id;
formulario.submit();
Y ha funcionado!!!!! Joder, estaba a punto de mandar a la M el P formulario. Os juro que esto es por afición, que yo aprendí en un cursillo.
IExplorer go home!!!