Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Чтобы сохранить файл с URL в C#, создайте пустой HTMLDocument, подготовьте RequestMessage для целевого URL, отправьте его через document.Context.Network.Send(request), проверьте статус ответа и запишите полученные байты в локальный файл.
В этой статье показан пример C#, который можно использовать, чтобы сохранить файл с URL. Когда вы загружаете файл по URL, вы можете получить к нему доступ, передать его другим, сохранить локально и использовать веб-ресурс в дальнейшей обработке.
Файлы с URL часто сохраняют по нескольким причинам:
Чтобы сохранить файл с URL, нужно знать его адрес и иметь обработчик сетевых операций для соответствующего протокола. Aspose.HTML for .NET предоставляет удобные возможности для обработки URL с разными типами протоколов. Для этого создайте пустой HTML-документ и вызовите обработчик сетевого запроса, как показано в примере C# ниже.
Чтобы сохранить файл с URL в C#:
RequestMessage, представляющий сообщение HTTP-запроса.File.WriteAllBytes(), чтобы сохранить загруженный файл в локальной файловой системе.Рассмотрим, как сохранить файл с URL с помощью библиотеки Aspose.HTML C#:
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}| Проблема | Причина | Решение |
|---|---|---|
| Загруженный файл пустой | Тело ответа читается без проверки статуса ответа. | Всегда проверяйте, успешен ли ответ, перед чтением содержимого. |
| Ошибка 404 при внешне корректном URL | URL содержит незакодированные пробелы, специальные символы или неправильно разрешенный относительный путь. | Кодируйте части URL при необходимости и используйте базовый URL страницы для разрешения относительных ссылок. |
OutOfMemoryException при больших файлах | Весь ответ загружается в память как массив байтов. | Читайте ответ потоком и копируйте его в файл частями через буфер. |
| Сохраненный файл получил неверное расширение | Путь в URL или редирект не соответствует фактическому типу содержимого. | Проверяйте заголовки ответа и осознанно выбирайте локальное имя файла или расширение. |
| Запрос не выполняется на сервере или в контейнере | Сетевой доступ, настройки прокси, сертификаты или разрешенные URL ограничены. | Проверьте сетевые права, конфигурацию прокси и CA-сертификаты в среде выполнения. |
Да. Установите request.Method = HttpMethod.Post и добавьте содержимое через request.Content = new StringContent(...) перед отправкой запроса.
Используйте request.Headers.Add("Header-Name", "value") перед отправкой запроса.
Встроенный сетевой слой предназначен для рабочих процессов на базе HTTP и HTTPS. Для FTP нужна собственная сетевая реализация за пределами стандартного примера на этой странице.
Для больших файлов не загружайте весь ответ в память. Читайте содержимое ответа потоком и копируйте его в файл частями.
Вы можете загружать файлы с URL, используя полные примеры C# из репозитория Aspose.HTML for .NET на GitHub.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.