DESARROLLADOR
Como determinar si un archivo existe en el servidor en ASP ClásicoPor Ronald Flores, Puerto Rico Internet News
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
Este artículo ha sido visto 221 veces.
Más artículos y Noticias
|