Save File from URL Using C#

In this article, you will see a C# example that you can use to save a file from URL. When you download file from URL, you have the ability to access, share, save, and use the file from the Web for various purposes depending on your needs. There are a few reasons why you would want to save files:

How to Save File from URL

In order to save file from URL, you need to know its URL and have a network operations handler suitable for its protocol. Aspose.HTML for .NET library provides you with convenient functionality for processing URLs with different kinds of protocols. In order to use it, you just need to create an empty HTML document and call the network request handler, as shown in the following C# example:

  1. Use the HTMLDocument() constructor to create a blank document.
  2. Create a URL with the path to the resource you want to save.
  3. Use the RequestMessage(url) constructor to create a new instance of the RequestMessage class, which represents an HTTP request message. The url parameter is passed to the constructor, specifying the URL to which the request will be sent.
  4. Use the Context.Network.Send(request) method to send the request. The response is checked to ensure it was successful.
  5. Finally, if the response was successful, use the File.WriteAllBytes() method to save files to a local file system.

Let’s look at how to save file from URL using the Aspose.HTML C# library:

 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/net/message-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}

FAQ

  1. Q: Can I download files using HTTP POST?
    A: Yes. Set request.Method = HttpMethod.Post and add content via request.Content = new StringContent(...).

  2. Q: How do I add custom headers (e.g., API keys)?
    A: Use request.Headers.Add("Header-Name", "value") before sending the request.

  3. Q: Does Aspose.HTML support FTP?
    A: No. The built-in network layer supports HTTP/HTTPS only. FTP requires a custom INetworkService implementation.

Common Mistakes and Fixes

ProblemCauseSolution
Downloaded file is emptyBody read without checking response status.Always check response.IsSuccess before reading content.
404 error with valid-looking URLURL contains unencoded spaces or special characters.Encode with Uri.EscapeDataString or use Aspose’s Url class for resolution.
OutOfMemoryException with large filesLoading entire response into memory via ReadAsByteArray().Stream the response: using var stream = response.Content.ReadAsStream(); and copy in chunks using a buffer.

Related Resources

You can download files from URLs using complete C# examples from GitHub.

Text “HTML Web Applications”

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.