saber existe desde como buscar archivo c# http file webclient exists

desde - Cómo verificar si un archivo existe en un servidor usando c#y la clase de WebClient



buscar archivo en sql server (2)

En mi aplicación, uso la clase WebClient para descargar archivos de un servidor web simplemente llamando al método DownloadFile . Ahora necesito verificar si existe un determinado archivo antes de descargarlo (o en caso de que solo quiera asegurarme de que existe). Tengo dos preguntas con eso:

  1. ¿Cuál es la mejor manera de verificar si un archivo existe en un servidor sin transferir mucha información a través del cable? (Es una gran cantidad de archivos que necesito revisar)
  2. ¿Hay alguna forma de obtener el tamaño de un archivo remoto determinado sin descargarlo?

¡Gracias por adelantado!


Cuando solicita un archivo utilizando la Clase de WebClient , el Error 404 (Archivo no encontrado) dará lugar a una excepción. La mejor manera es manejar esa excepción y usar una bandera que se puede configurar para ver si el archivo existe o no.

El código de ejemplo es el siguiente:

System.Net.HttpWebRequest request = null; System.Net.HttpWebResponse response = null; request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("www.example.com/somepath"); request.Timeout = 30000; try { response = (System.Net.HttpWebResponse)request.GetResponse(); flag = 1; } catch { flag = -1; } if (flag==1) { Console.WriteLine("File Found!!!"); } else { Console.WriteLine("File Not Found!!!"); }

Puedes poner tu código en bloques respectivos. ¡Espero eso ayude!


WebClient es bastante limitado; Si cambia a utilizar WebRequest , obtendrá la capacidad de enviar una solicitud HTTP HEAD. Cuando emita la solicitud, debería obtener un error (si falta el archivo) o un WebResponse con una propiedad válida de ContentLength .

Edición: Código de ejemplo:

WebRequest request = WebRequest.Create(new Uri("http://www.example.com/")); request.Method = "HEAD"; using(WebResponse response = request.GetResponse()) { Console.WriteLine("{0} {1}", response.ContentLength, response.ContentType); }