Deseo obtener el tamaño de un archivo http: /.../ antes de descargarlo. El archivo puede ser una página web, una imagen o un archivo multimedia. ¿Se puede hacer esto con los encabezados HTTP? ¿Cómo descargo solo el encabezado HTTP del archivo?Cómo obtener el tamaño de archivo de los encabezados http
Respuesta
Sí, suponiendo que el servidor HTTP que está hablando soportes/permite esto:
System.Net.WebRequest req = System.Net.HttpWebRequest.Create("http://stackoverflow.com/robots.txt");
req.Method = "HEAD";
using (System.Net.WebResponse resp = req.GetResponse())
{
int ContentLength;
if(int.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
{
//Do something useful with ContentLength here
}
}
Si no está permitido usar el método HEAD, o la cabecera Content-Length no está presente en la respuesta del servidor, la única forma de determinar el tamaño del contenido en el servidor es descargarlo. Como esto no es particularmente confiable, la mayoría de los servidores incluirán esta información.
¿Se puede hacer esto con los encabezados HTTP?
Sí, este es el camino a seguir. Si se proporciona la información, está en el encabezado como Content-Length
. Tenga en cuenta, sin embargo, que este no es necesariamente el caso.
Descargando solo el encabezado se puede hacer utilizando una solicitud HEAD
en lugar de GET
. Tal vez el código siguiente ayuda:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://example.com/");
req.Method = "HEAD";
long len;
using(HttpWebResponse resp = (HttpWebResponse)(req.GetResponse()))
{
len = resp.ContentLength;
}
Aviso la propiedad de la longitud del contenido en el objeto HttpWebResponse
- no hay necesidad de analizar la cabecera Content-Length
manualmente.
¿No 'resp.ContentLength' anterior le dará la longitud de la respuesta HEAD, y no la longitud del archivo que le interesaba obtener la sizeof? –
@ Adam No. La documentación dice: "La propiedad ContentLength contiene el valor del encabezado Content-Length devuelto con la respuesta". –
Correcto, gracias, Konrad. –
WebClient webClient = new WebClient();
webClient.OpenRead("http://stackoverflow.com/robots.txt");
long totalSizeBytes= Convert.ToInt64(webClient.ResponseHeaders["Content-Length"]);
Console.WriteLine((totalSizeBytes));
- 1. Cómo obtener el tamaño de archivo
- 2. Compactar encabezados Http
- 3. Node.js: cómo limitar el tamaño de la solicitud HTTP y el tamaño del archivo de carga?
- 4. ¿Cómo obtener encabezados HTTP no estándar en nginx?
- 5. Cómo usar los encabezados de caché HTTP con PHP
- 6. Conflictos de encabezados HTTP multilínea
- 7. Cómo obtener el tamaño del archivo HttpPostedFileBase
- 8. Obtener encabezados HTTP en la solicitud asíncrona de WebClient
- 9. Configuración El HTTP expira los encabezados usando PHP y Apache
- 10. Cómo obtener el tamaño de archivo de "System.Drawing.Image"
- 11. Python: Obtenga los encabezados HTTP de la llamada urllib2.urlopen?
- 12. Analizando encabezados HTTP
- 13. ¿Pueden los encabezados HTTP ser demasiado grandes para los navegadores?
- 14. Eliminación de encabezados http en Apache2
- 15. Cómo depurar los encabezados de respuesta http de una llamada HTTP
- 16. springframework obtener todos los encabezados de solicitud
- 17. Servidor HTTP detrás de IIS: pase los encabezados de autenticación
- 18. Cómo eliminar los encabezados HTTP específicos en Javascript
- 19. ¿Cómo se analizan los encabezados HTTP con libcurl?
- 20. Reescribir los encabezados de respuesta con node-http-proxy
- 21. Excepción de SoapFault: error [HTTP] Recuperar encabezados http
- 22. JSF, sobrescribir encabezados HTTP
- 23. Detecta que los encabezados http de asp.net ya se enviaron
- 24. ¿Hay alguna manera de modificar los encabezados HTTP para IE6?
- 25. Cómo agregar encabezados http en espuma 0.3.6?
- 26. ¿Cuáles son los campos de encabezados HTTP necesarios?
- 27. ¿Son aceptables los encabezados de respuesta HTTP duplicados?
- 28. ¿Cómo obtener el tamaño de archivo y eliminar el archivo en Lua?
- 29. ¿Cómo obtener los encabezados? (Java, httpclient 4.X)
- 30. Cómo reenviar encabezados en la redirección HTTP
Si usa 'using', lo descarta automáticamente. http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.110).aspx – justderb
Otra nota, si está utilizando esto para archivos extremadamente grandes 'int' no es suficiente, necesitará para usar 'long ContentLength;' y 'long.TryParse (xxx)' para admitir más de un valor de retorno de 2.14GB de tamaño. – Preston
¿No se habilitará la compresión http para eliminar el tamaño real del archivo? – Justin