Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Borrar valores file multiple jquery

Estas en el tema de Borrar valores file multiple jquery en el foro de Jquery en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/01/2018, 06:05
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 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
  #2 (permalink)  
Antiguo 07/01/2018, 02:38
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: Borrar valores file multiple jquery

Estoy tonto... Ahora al venir a revisar si habia respuesta he encontrado la solucion a la primera.

Tenia esto:
Código:
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(); }
Y como comenté habia probado con esto:
Código:
data.files.length = 0;
Pues funciona, lo que pasa es que no lo filtraba cuando debia; asique lo filtro desde el principio con
Código:
if(data.files.length > 0)  {
Y queda asi al final:
Código:
if(data.files.length > 0)  {
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'])) {
data.files.length = 0;
alert('Not an accepted file type');
} else { $(this).html('Uploading...'); data.submit();
}
}
Pongo la solución por si a alguien le ayuda con este mismo problema.
__________________
Manz Soluciones On/Off

Etiquetas: file
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:47.