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:
- ¿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)
- ¿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);
}