Despues de días peleandome con ello, y no lograr resultados en ningun lado (ni por mi cuenta ni en la red, os planteo mi problema a ver si me podeis dar algo de luz.
Tengo eso en mi formulario:
Código HTML:
<form action="email.php" id="contactor" enctype="multipart/form-data" ><input id="file" name="img[]" type="file" multiple><a href="" class="sig">Enviar</a></form>
Este es el código:
Código:
Como se puede ver, tengo esta parte que lanza un error si el formato no es valido:var formimg = $('#contactor'); var pasam = false; formimg.fileupload({ sequentialUploads:true, singleFileUploads:false, limitMultiFileUploads:4, add: function (e, data) { pasam = true; $('#contratar2 a.sig').click(function (e) { e.preventDefault(); console.log(data); var condition = 'pdf|jpe?g|png|doc?x'; var formmail = $('#contactor input[name="email"]').val(); var acceptFileTypes = new RegExp("(\.|\/)(" + condition + ")$", "i"); if ( !(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(formmail)) ) { alert("Por favor, introduzca un e-mail válido."); } else if (data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) { alert('Not an accepted file type'); } else { $(this).html('Uploading...'); data.submit(); } }); }, done:function(e, data){ console.log(data.result); $('.mensaje').show(); setTimeout(function(){ $('.mensaje').hide(); },5000); }, fail:function(e, data){ $('.mensaje').show().html('ERROR:' + data.context); } });
Código:
Hasta ahi todo bien, ahora, cual es el problema.if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) { data.files.length = 0; alert('Not an accepted file type'); }
-> Si subo un archivo ZIP lanza el error
-> Si POSTERIORMENTE vuelvo a "Explorar" y pongo un PDF, lanza error y posteriormente envia
Entiendo que eso significa que "mantiene" el fichero anterior en la cola del fileupload.
La solución -> Facil, si da error, borrarlo de la cola.
La ejecución -> He probado de todo y nada me funciona.
Probe con ponerle
Código:
Y luego filtrarlodata.files.length = 0;
Código:
Pero en ese caso, salta error de que el archivo 0 (el que quiero descartar) esta vacio. (Pero sigue ahi).if (data.files.length > 0){ if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) { data.files.length = 0; alert('Not an accepted file type'); } }
Alguna idea?¿?¿?
Muchas gracias de antemano