Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Para guardar un archivo desde una URL en C#, cree un HTMLDocument vacío, construya un RequestMessage para la URL de destino, envíelo con document.Context.Network.Send(request), compruebe el estado de la respuesta y escriba los bytes de respuesta en un archivo local.
Este artículo muestra un ejemplo de C# que puede usar para guardar un archivo desde una URL. Al descargar un archivo desde una URL, puede acceder, compartir, guardar y usar el archivo de la web para distintos fines según sus necesidades.
Hay varias razones por las que puede querer guardar archivos:
Para guardar un archivo desde una URL, necesita conocer su URL y contar con un controlador de operaciones de red adecuado para su protocolo. Aspose.HTML for .NET ofrece funcionalidad práctica para procesar URL con distintos tipos de protocolos. Para usarla, cree un documento HTML vacío y llame al controlador de solicitudes de red, como se muestra en el siguiente ejemplo de C#.
Para guardar un archivo desde URL en C#:
RequestMessage que representa un mensaje de solicitud HTTP.File.WriteAllBytes() para guardar el archivo descargado en el sistema de archivos local.Veamos cómo guardar un archivo desde una URL usando la biblioteca C# Aspose.HTML:
1// Download file from URL using C#
2
3// Create a blank document; it is required to access the network operations functionality
4using HTMLDocument document = new HTMLDocument();
5
6// Create a URL with the path to the resource you want to download
7Url url = new Url("https://docs.aspose.com/html/images/handlers/message-handlers.png");
8
9// Create a file request message
10using RequestMessage request = new RequestMessage(url);
11
12// Download file from URL
13using ResponseMessage response = document.Context.Network.Send(request);
14
15// Check whether response is successful
16if (response.IsSuccess)
17{
18 // Save file to a local file system
19 File.WriteAllBytes(Path.Combine(OutputDir, url.Pathname.Split('/').Last()), response.Content.ReadAsByteArray());
20}| Problema | Causa | Solución |
|---|---|---|
| El archivo descargado está vacío | El cuerpo de la respuesta se lee sin comprobar el estado de la respuesta | Compruebe siempre si la respuesta fue correcta antes de leer el contenido |
| Error 404 con una URL aparentemente válida | La URL contiene espacios sin codificar, caracteres especiales o una ruta relativa resuelta de forma incorrecta | Codifique partes de la URL cuando sea necesario y use la URL base de la página al resolver enlaces relativos |
OutOfMemoryException con archivos grandes | Toda la respuesta se carga en memoria como un arreglo de bytes | Transmita la respuesta y cópiela por bloques usando un búfer |
| El archivo guardado tiene la extensión incorrecta | La ruta de la URL o una redirección no coincide con el tipo de contenido real | Compruebe encabezados de respuesta y elija intencionalmente el nombre o la extensión del archivo local |
| La solicitud falla en un servidor o contenedor | El acceso de red, proxy, certificados o URL permitidas están restringidos | Verifique permisos de red, configuración de proxy y certificados CA en el entorno de ejecución |
Sí. Establezca request.Method = HttpMethod.Post y añada contenido con request.Content = new StringContent(...) antes de enviar la solicitud.
Use request.Headers.Add("Header-Name", "value") antes de enviar la solicitud.
La capa de red integrada está pensada para flujos HTTP y HTTPS. FTP requiere una implementación de red personalizada fuera del ejemplo estándar mostrado en esta página.
Para archivos grandes, evite cargar toda la respuesta en memoria. Transmita el contenido de la respuesta y cópielo a un archivo por bloques.
Puede descargar archivos desde URL usando ejemplos completos de C# del repositorio GitHub de Aspose.HTML for .NET.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.