Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/06/2007, 08:54
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: ¿Como saber si un archivo existe en un servidor?

Pues yo lo haria mas o menos asi:

-La llamada desde el cliente lo haría a traves del objeto XMLHTTP que llamaría a una página .asp en el servidor. Dicho objeto puede devolver tanto texto plano como XML.

- En el servidor, dicha página .asp contendría un objeto MSXML.DOMDocument que se encargaría de comprobar si existe dicho archivo usando su método LoadXML y una gestion de error:

Código:
    objDoc.loadXML(strFile)
    if objDoc.parseError.errorCode <> 0 Then
        response.Write("Error de Lectura (Por favor, ponerse en contacto con el webmaster).<br />FilePos: " & objDoc.parseError.filepos & "<br /> Línea: " & objDoc.parseError.Line & "<br /> Causa: " & objDoc.parseError.reason & "<br /> Ocurrió en: " & objDoc.parseError.srcText & "<br /> Archivo: " & objDoc.parseError.URL)
    end if
Te pongo toda la gestion de error por si te sirve de algo pero el método devuelve true si todo ha ido bien o false si no.

En caso de que todo haya ido bien, es tan facil como:

if objXML.loadXML(talarchivo.xml) then response.write objXML.xml

Y la página que devolvería sería el XML guardado.

En caso de que no exista, puedes crearlo con dicho objeto y finalmente guardarlo con el método save. Por ejemplo

objXML.save c:\inetpub\wwwroot\xml\xml_10_04_2007.xml

Si te fijas, realmente no necesitas guardar el RSS en ningun archivo físico ya que puedes generarlo cada vez que es solicitado. La única ventaja que tiene guardarlo en un archivo es la rapidez (con una sola linea de código se devuelve). Sus desventajas son principalmente que cuando lleves 6 o 7 meses, habrá una cantidad considerable de archivos RSS y serán asequibles para cualquiera que sepa lo que tiene que buscar.

De la otra forma, simplemente generas el RSS de forma dinámica dejando el disco duro del servidor mas o menos impoluto


NOTA: XMLHTTP tambien dispone de la propiedad status:

if objXMLHTTP.status = 200 then ' Todo ha ido bien

else ' Nada, no funca

end if


Espero haberte ayudado


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 05/06/2007 a las 09:02