Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2018, 06:05
tanatos_neon
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 7
Exclamación Borrar valores file multiple jquery

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
Código:
data.files.length = 0;
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
__________________
Manz Soluciones On/Off