Foros del Web » Programando para Internet » Javascript »

Extensión del archivo de un <input type="file">

Estas en el tema de Extensión del archivo de un <input type="file"> en el foro de Javascript en Foros del Web. Necesito averiguarla... Ahora trabajo con un script que pillé del scriptmaster (lo siento, no lo tengo a mano para poner el codigo) pero me falla ...
  #1 (permalink)  
Antiguo 02/08/2003, 09:57
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Extensión del archivo de un <input type="file">

Necesito averiguarla...
Ahora trabajo con un script que pillé del scriptmaster (lo siento, no lo tengo a mano para poner el codigo) pero me falla si el nombre del archivo tiene [ ] o si tiene más de un .
Lo que pretendo hacer por simplificar es dividir el value() por los . y tomar el último trozo y guardarlo en una variable, luego lo demás sé hacerlo.
¿Sería posible? ¿Cómo?
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 02/08/2003, 14:56
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
file.slice(file.indexOf(".")).toLowerCase();
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 03/08/2003, 13:48
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Bueno eso es lo que tenía, pero no me valía si hay más de un . (entonces falla)
Pero ya lo solucioné, con un bucle while que lo que hacía era ir contando los puntos hasta el último, y así sacar la extensión.
Un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 03/08/2003, 15:14
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

¿Esto iría?
file.slice(file.lastIndexOf(".")).toLowerCase();
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 05/08/2003, 08:21
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Por supuesto que funciona. Sin embargo después del lastIndexOf tuve que añadir un +1, pero mejor dejo la función entera y que cada uno saque sus conclusiones:
Código:
extArray = new Array('zip','rar'); // <---- Extensiones válidas
function extension(file) {
	allowSubmit = false;
	if (!file) return;
	file = file.slice(file.lastIndexOf("\\")+1);
	// Sacamos el nombre del archivo (y solucionamos bug Opera 6)
	if (file.indexOf('"') != -1) {
		var archivo = file.substring(0,file.indexOf('"'));
		file = file.substring(0,file.indexOf('"'));
	} else {
		var archivo = file;
	}
	// Sacamos la extension del archivo y la pasamos a minusculas
	file = file.slice(file.lastIndexOf(".")+1);
	var ext = file.toLowerCase();
	// Comparamos con los elementos del array
	for (var i = 0; i < extArray.length; i++) {
		if (extArray[i] == ext) { 
			allowSubmit = true;
			break;
		}
	}
	// Si la extension no es válida, avisamos	
	if (!allowSubmit) {
		alert("Se permiten únicamente archivos con la extensión:\n" + (extArray.join("\n")) + "\n\nEl archivo " + archivo + " no es válido. Por favor, seleccione otro archivo e intente de nuevo.");
		document.subir.archivo.focus();
	}
	return allowSubmit;
}
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #6 (permalink)  
Antiguo 05/08/2003, 10:36
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Viste la FAQ 140? Mas o menos es lo mismo. Lo que quisiera que me expliques es cual es el bug Opera 6...
__________________
No tengo firma ahora... :(
  #7 (permalink)  
Antiguo 05/08/2003, 10:45
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
La vi, pero la verdad es que esto me pareció más sencillo

El bug de Opera 6... lo que pasa es que en Opera, al seleccionar un archivo, pone " al inicio y al final, o sea tipo "c:\archivo.zip"
En Opera 7 no pasa, pero he visto que en Opera 6 la " la toma como si fuera parte del value() del campo, por tanto lo que hay que hacer es quitar dicha comilla para poder hacer la comparación.
En un principio había usado como extensiones válidas:
zip
rar
zip"
rar"
Y con ello se solucionaba el bug, pero al final cambié y lo deje como puse
Saludos

P.D.: ¿a alguien más no le salen los <input type=file> en Netscape 6.2 castellano? Me trae muy mosqueado, es la única versión donde no me va...
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.

Última edición por ferny; 05/08/2003 a las 10:47
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 13:29.