DESARROLLADOR
Como determinar si un archivo existe en el servidor en ASP Clásico
By Ronald Flores, Puerto Rico Internet News | 11/28/2009 8:05:06 PM, @8:05:06 PM
Todo programador ASP debe contar con una librería de funciones que son comunes y de mucha utilidad al momento de desarrollar aplicaciones en ASP clásico. Estas funciones, las cuales pueden ser modificables, proveen métodos sencillos y fácilmente disponibles para realizar tareas repetitivas. Una de éstas lo es FileExists.
El método FileExists es uno integrado dentro del objeto FileSystemObject de ASP clásico. Este tiene una funcionalidad sencilla: el determinar si un archivo específico existe dentro de la estructura interna de un servidor. El mismo se utiliza de la manera:
FileSystemObject.FileExists(filename)
Donde filename es el nombre de un archivo dentro de la estructura de la raíz (root) del servidor y la función devuelve TRUE o FALSE dependiendo del resultado.
Consideraciones al utilizar fileexistsEs necesario entender que fileexists funciona atado a la estructura del servidor. No osbtante, esta estructura es a nivel de raíz o "root". El parámetro filename desprende de la raíz física del servidor. Supongamos que usted tiene un archivo en una carpeta en su servidor, por ejemplo "http://www.mipagina.com/fotos/1.jpg". Si intentamos el siguiente código:
dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists("http://www.mipagina.com/fotos/1.jpg")=true then response.write("¡Archivo Existe!") else response.write("¡Archivo NO Existe!") end if set fs=nothing %>
El código no funcionará y devolverá un error porque el archivo "http://www.mipagina.com/fotos/1.jpg" no existe dentro de la estructura del servidor. El siguiente código sería correcto:
dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists("c:\inetput\wwwroot\fotos\1.jpg")=true then response.write("¡Archivo Existe!") else response.write("¡Archivo NO Existe!") end if set fs=nothing
Note que la estructura correcta para enviar el parámetro de filename está parametrizado según la estructura física de su servidor. Pero muchas veces este método es inseguro e inpráctico por varias razones: 1) si usted tiene sus páginas en un hosting remoto no es bueno especificar en donde se encuentra físicamente su sitio web instalado, y 2) muchas compañías de hosting esconden este valor por motivos de seguridad. Entonces ¿qué podemos utilizar? Utilizamos entonces el método Server.MapPath.
Utilizando Server.MapPathOtra colección de mucha utilidad para el programador ASP es la colección Server. Dentro de ésta encontramos el método .MapPath, el cual devuelve (o mas bien, resuelve) la estructura del servidor para uso interno del programa. Por ejemplo, si utilizamos el siguiente código:
response.write Server.MapPath("/fotos")
El resultado será: c:\hosting\fotos\ debido a que dentro del servidor, la carpeta "/fotos" se encuentra físicamente en c:\hosting\fotos\
Con esto en mente, podemos modificar el código arriba para encontrar la localidad del archivo que estamos buscando y que el programa nos devuelva la localidad física en disco del archivo que deseamos encontrar:
dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists(Server.MapPath & "\fotos\1.jpg")=true then response.write("¡Archivo Existe!") else response.write("¡Archivo NO Existe!") end if set fs=nothing
Cómo Utilizar la Función FileExists Basado en las premisas arriba mencionadas, podemos entonces crear una función que nos diga si un archivo en específico existe dentro de la estructura del servidor.
1 function fileExists(inFile) 2 on error resume next 3 if inFile <> "" then 4 Set FSO = Server.CreateObject("Scripting.FileSystemObject") 5 fic_path = Server.MapPath(inFile) 6 fileExists = FSO.FileExists(fic_path) 7 set FSO = nothing 8 end if 9 end function
PASO A PASO Esta función hace lo siguiente: LINEA 1 Declaramos la función con el nombre fileExists y determinamos que la misma tiene una variable de entrada llamada inFile. Esta variable cargará internamente el nombre del archivo que deseamos buscar.
LINEA 2 Declaramos on error resume next de tal forma que de ocurrir un error, el programa continuará operando la próxima instrucción en el caso de que algo suceda mal o encuentre un error.
LINEA 3 Hacemos un poco de "error catching" utilizando la condición IF. Si en algún momento la variable inFile está vacia (no hay parámetro especificado) la función no correrá.
LINEA 4 Declaramos la variable FSO y creamos un objeto de tipo FileScriptingObject.
LINEA 5 Creamos la variable fic_path a la cual le añadiremos (resolveremos) la carpeta raíz al archivo buscado utilizando Server.MapPath.
LINEA 6 Utilizamos el nombre de la función fileExists y le asignamos el resultado del método FileExists. Con esto asignamos el valor del resultado a la función para asó devolver el mismo al programa. Si el archivo existe, le asigna TRUE (Cierto) al valor de la función. Si no existe, le asigna FALSE (falso) a la función.
LINEA 7 Una vez terminado, removemos el objeto FSO de la memoria del servidor. Este paso es muy importante ya que si usted utiliza muchas veces esta función, si no cierra los objetos esto puede causar un "leak" de memoria y recursos ya que los objetos permanecen asignados en memoria si usted no los remueve.
Como llamar la funciónPara hacer uso de la misma, podemos hacerlo de la siguiente manera:
for i = 0 to 10 archivo_a_buscar = "/fotos/" & i & ".jpg" existe_archivo = fileExists(archivo_a_buscar) if existe_archivo then response.write "Archivo " & archivo_a_buscar & " EXISTE. " else response.write "Archivo " & archivo_a_buscar & " NO EXISTE. " end if next
|
Artículos Relacionados
Un vistazo a Microsoft Surface
8/30/2010
Google lanza competencia contra Skype
8/30/2010
RIM lanza Blackberry Torch
8/29/2010
IE9 estará disponible desde septiembre 15 2010
8/29/2010
Baby's Planet anuncia rediseño de su página
8/29/2010
This article has been seen 492 times.
More News and Articles
|
|
|

Tecnología | Celulares y Equipos Móviles
AT&T anuncia nuevos planes de datos
La compañía de celulares AT&T anunció ayer miércoles la disponibilidad de nuevos planes de data que tienen el objetivo de “hacer más económico el acceso de Internet móvil a más personas a través de nuestra red”, según informó la empresa a través de un comunicado de prensa.
|
Por Ronald Flores, Puerto Rico Internet News | 6/3/2010 7:30:16 AM @7:30:16 AM
|
Software | Sistemas Operativos
Canonical lanza Ubuntu 10.04 ‘Lucid Lynx’
La empresa sudafricana Canonical anunció la disponibilidad de la más reciente edición de su sistema operativo abierto basado en Linux, Ubuntu 10.04. La misma puede ser descargada ya directamente desde el sitio www.ubuntu.com.
|
Por Ronald Flores, Puerto Rico Internet News | 5/8/2010 8:11:51 AM @8:11:51 AM
|
Tecnología | Celulares y Equipos Móviles
Microsoft Cancela el Courier
Según fuentes internas de Microsoft, se ha desprendido que el proyecto que intentaría competir contra el iPad de Apple, el Microsoft Courier, ha sido cancelado.
|
Por Ronald Flores, Puerto Rico Internet News | 5/7/2010 5:31:36 PM @5:31:36 PM
|
Seguridad y IT | Virus, Spyware y Malware
McAfee deja a miles de computadoras inservivles
Cientos de miles de computadoras al rededor de los Estados Unidos, Puerto Rico, América Latina y el mundo entero de repente quedaron inservibles en un aparente ataque viral. El problema real: una actualización fallida del conocido antivirus McAfee.
|
Por Ronald Flores, Puerto Rico Internet News | 4/28/2010 5:53:21 AM @5:53:21 AM
|
Tecnología | Celulares y Equipos Móviles
Microsoft descarta Flash, 'Cut & Paste' en Phone 7 'por el momento'
La empresa Microsoft señaló esta semana que la nueva generación de teléfonos móbiles basados en Windows 7 no contarán con soporte a tecnologías de Flash ni "Cut & Paste".
|
Por Ronald Flores, Puerto Rico Internet News | 3/19/2010 7:04:44 AM @7:04:44 AM
|
|