Buenas gente.
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>
Estoy usando el plugin de blueimp para hacer el fileupload y enviarlo por mail. Ya os adelanto que todo funciona perfecto, sube los ficheros, los leo en mi mail.php y envia. El problema lo tengo en la parte de JS
Este es el código:
Código:
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); }
});
Como se puede ver, tengo esta parte que lanza un error si el formato no es valido:
Código:
if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
data.files.length = 0;
alert('Not an accepted file type');
}
Hasta ahi todo bien, ahora, cual es el problema.
-> 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
Y luego filtrarlo
Código:
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');
}
}
Pero en ese caso, salta error de que el archivo 0 (el que quiero descartar) esta vacio. (Pero sigue ahi).
Alguna idea?¿?¿?
Muchas gracias de antemano