Comunidad de diseño web y desarrollo en internet online

Cómo saber si un archivo existe por medio de Flash MX

El objetivo es simple, averiguar con Flash MX la existencia de un archivo ubicado en una ruta dada previamente.

Se puede decir que hay dos soluciones, una sencilla y artesanal y otra un tanto más técnica, así que comenzaremos con la sencilla:

1. Solución artesanal

Cuando carguemos el archivo en cuestión, se deberá cargar cierta variable especial que revisaremos en la siguiente orden a la instrucción que lo carga precisamente....y si bien es cierto que cuando ejecutamos nuestra película dentro de Flash nos aparecerá la ventana de salida hablándonos del error, cuando lo hagamos desde el player eso no pasará, así que para el usuario final será transparente ésta parte.

La idea es que el archivo (“doc.txt” para efectos de nuestro tutor) contenga una variable dentro, algo como:

sign=1&otra_variable=otro_valor

Ya dentro de la película dibujaremos un botón al que por acción le escribiremos:

on(release){
	// PASO 1
	nombre_de_archivo = caja.text;//donde caja (nombre de instancia) es un
	//campo de introducción de texto y en
	//donde se escribió "doc.txt" ..sin las
	//comillas, claro :)

	// PASO 2
	loadVariablesNum(nombre_de_archivo, 0);
	//PASO 3
	if(sign == 1){
		//PASO 4
		trace("el archivo existe porque entramos aquí");
	}else{
		//PASO 5
		trace("el archivo no existe porque entramos aquí");
	}
}
  1. En 1 capturamos el nombre del archivo de una caja de texto dentro de la película.
  2. En 2 recuperamos el contenido del archivo (si es que existe) dentro de nuestra película.
  3. En 3 preguntamos si la variable de guía existe.
  4. En 4 imprimimos en pantalla la confirmación de la existencia del archivo.
  5. Las 5 y 6 hacen lo propio cuando el archivo no existe.

Como vemos, la lógica utilizada es bastante simple, pero en algunos casos efectiva.
Sin embargo, qué ocurre cuando no tenemos acceso al archivo que estamos buscando antes de encontrarlo ?, obviamente el método anterior no funciona, es entones cuando la solución técnica comienza a jugar.

2. Solución técnica

En esta solución se hará uso del un objeto introducido en Flash MX, LoadVars(), y cuya explicación con ejemplo aplicado a consultar unas tablas en MySQL con la ayuda de PHP lo encontramos en:

http://www.macromedia.com/es/devnet/mx/flash/articles/flashmx_php.html

El objeto LoadVars() nos ayudará con un evento y una propiedad, llamados onLoad() y loaded respectivamente.

Aquí la lógica es levemente distinta:

  • Cargamos el archivo
  • Hacemos uso de los elementos anteriormente nombrados para corroborar que efectivamente existe el archivo en caso de de ser así.

El código es mostrado a continuación (si se tratase de un botón):

on(release){
	//PASO 1
	var carga = new LoadVars();
	//PASO 2
	carga.load(caja.text);
	//PASO 3
	carga.onLoad = function(){
		//PASO 4
		if(carga.loaded == true){
			caja.text = "El archivo exite";
		}else{
			caja.text = "El no archivo exite";
		}
	}
}
  1. En 1 creamos el objeto.
  2. En 2 cargamos un nombre de archivo obtenido de nuestra antigua caja de texto.
  3. En 3 se invoca el evento onLoad(). Esta es una operación que se debe hacer cada vez que se finaliza una operación load o sendAndLoad.
  4. En 4 averiguamos el estado de la propiedad loaded y en caso de ser verdadero (true), significará que la carga del archivo se realizó con éxito.

Lo interesante de esta solución es que el evento onLoad se carga cuando el método load() o sendAndLoad() hayan terminado su trabajo completamente, así que en el momento de ejecutar la línea 4, la propiedad loaded ya tendrá el resultado, que será true en caso de que el archivo haya sido leído o false en caso contrario.

Gerson Montenegro (gersonm)
[email protected]
www.cristalab.com

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate