Asp не скачивается файл

Обновлено: 02.07.2024

Браузер Google Chrome отличается стабильностью и высокой скоростью работы. Пользователи очень редко жалуются на Хром, именно поэтому выбирают его среди прочего числа веб-обозревателей. Однако, как и любая программа, Гугл Хром может столкнуться с проблемами, причем некоторые из них не являются ошибкой или некачественной работой браузера, а просто сторонними причинами, которые не дают правильно выполнять возложенные на него задачи. Одной из таких является невозможность скачать файл. Если вы столкнулись с подобной проблемой, то разберемся с причинами сбоя и как устранить неполадки.

Нестабильное подключение

Одним из требований браузера для корректного скачивания любого файла, особенно большого размера, является стабильное интернет-подключение. Скорость и размер задержки в миллисекундах можно узнать несколькими способами.

Вариант 1: Самостоятельная проверка

Для проверки задержки можно использовать встроенные в ОС средства, либо онлайн-сервисы, например, Speedtest. Последний вариант хоть и удобнее, но может не сработать ввиду отсутствия стабильного подключения к сети. Поэтому рассмотрим вариант проверки с помощью командой строки.

  1. На клавиатуре нажмите комбинацию клавиш Win + R и в появившемся окне введите команду cmd, после чего щелкните кнопку «ОК».

Окно выполнения команд Windows

Команда ping в командной строке Windows

  1. Положительным результатом можно считать четыре ответа от сайта. В них указаны интервалы, время ответа и другие полезные данные. Хорошим показателем будет время в пределах 50-100 мс – чем он меньше, тем лучше.

Обмен пакетами в командной строке Windows

В противном случае будет получен ответ «Превышен интервал ожидания». Это говорит о невозможности компьютера связаться с желаемым сайтом. В таком случае попробуйте действия из пункта 2 проделать с любым другим сайтом, например, Google. Если результат будет отрицательным, значит скорее всего проблема не в сайте.

Вариант 2: Обращение к провайдеру

Если невозможно получить ответ ни от одного желаемого сайта и есть уверенность в корректной работе сетевых устройств, значит есть смысл обратиться за помощью к представителю услуг интернет-подключения. Те, в свою очередь, смогут более детально рассмотреть проблему и решить её.


Недостаточно места на компьютере

Одна из самых распространенных и простых проблем почему прерывается загрузка. Если на компьютере нет места для файла, то браузеру некуда его будет скачать. Проверить свободное место на жестком диске просто, для этого кликните по иконке «Компьютер», посмотрите на строки под локальными дисками.

Коренная папка файловой системы Windows

Необходимо обратить внимание на тот диск, в котором находится указанная в настройках скачивания браузера папка. Визуально легко отличить заполненный том – его полоска будет красной, а не синей.

Обратите внимание! Для корректной работы системы и полного скачивания желаемого файла необходимо оставлять чуть больше места, чем того требует объем загружаемого объекта.




Не указана папка для загрузки

С такой проблемой сталкиваются, когда в настройках браузера была указана папка для загрузки, а потом была удалена с компьютера. В этом случае браузер не скачивает файлы, потому что ему не указали куда. Решение проблемы простое – необходимо заново установить другую папку в настройках.

  1. Заходим в Яндекс.Браузер, переходим в главное меню нажав три полоски, и выбираем пункт «Настройки».

Кнопка настроек в главном меню Яндекс Браузера

Строка выбора пути для сохранения файлов в Яндекс Браузере

Интересно! Для временного использования можно указывать даже USB-накопитель.

Reset download actions for all file types

To reset how all file types are handled by Firefox back to default:

On Windows, third-party download manager plugins can interfere with Firefox downloads. Download Manager plugin files that get added to the Firefox plugins folder include the following, listed by the download manager program and the associated plugin filename:

  • GetRight:
    NPGetRt.dll
  • WinGet:
    NPWinGet.dll
  • Download Accelerator Plus:
    npdap.dll
  • FreshDownload:
    npfd.dll
  • Net Transport:
    NPNXCatcher.dll , NPNXCatcher(Audio).dll , and NPNXCatcher(Video).dll

See Troubleshoot issues with plugins like Flash or Java to fix common Firefox problems for instructions on how to disable or remove plugins.

Internet security software, including firewalls , antivirus programs, anti-spyware programs, and others can block certain file downloads. Check the settings in your security software to see if there is an setting that may be blocking downloads.

To diagnose whether Internet security software is causing problems, you can try temporarily disabling it, seeing if downloads work, and then re-enabling the software.

Бывает так, что пользователь вдруг сталкивается с проблемой невозможности загрузки файлов из Всемирной паутины. Автоматические настройки Интернета вроде бы и позволяют это сделать, но по каким-то причинам процесс не стартует. Что может быть причиной появления таких ситуаций и как устранить возникновение этих проблем, читайте далее.

Повреждение папки профиля

Создание и дальнейшее использование профиля внутри браузера позволяет персонализировать его на нескольких устройствах. Его данные хранят настройки, предпочтения и другие важные параметры, используемые в повседневности. Некорректная работа файлов такого профиля может спровоцировать проблему с загрузкой объектов из интернета.

Для начала необходимо очистить временные данные (кеш, cookie, и другая информация). Сделать это можно комбинацией клавиш CTRL + SHIFT + DELETE. Выберите в первой строке вариант «За всё время», установите галочки, щелкните «Очистить историю».

Кнопка очистки временных файлов в Яндекс Браузере

Если очистка временных файлов не помогла, нужно попробовать удаление профиля с его настройками и последующее создание нового.

Важно! Удаление профиля влечёт за собой потерю всех хранимых данных, связанных с ним: информация о синхронизации вкладок, базовых и дополнительных настроек, прочих персональных данных. Будьте внимательны при удалении аккаунта в браузере.

  1. Перейдите в главное меню браузера, пункт «Настройки».

Пункт настроек в Яндекс Браузере

  1. В разделе «Общие настройки» найдите профили, и напротив используемого нажмите кнопку «Удалить». Подтвердите действие.

Кнопка удаления профиля пользователя в Яндекс Браузере

После совершения вышеуказанных действий рекомендуется попробовать продолжить прерванную загрузку после перезагрузки Яндекс.Браузера.

Неправильная работа браузера

Как и в предыдущем случае, конфликт программ и системные сбои также могут стать причиной того, что ничего не скачивается в браузере.


В случае возникновения подобной проблемы и некорректной работы обозревателя следует переустановить его, поставив более новую версию. Удаление необходимо выполнять с помощью специального деинсталлятора, например, программы Revo Uninstaller.

Проблемы с оборудованием

Проблема прерывания может быть связана с аппаратными проблемами. В основном это средство передачи трафика – роутер (модем). При возможности нужно попробовать прямое подключение интернет-кабеля в разъем RJ-45 и повторить загрузку. Самой популярной проблемой у роутеров является банальная перегруженность. Для их сброса достаточно перезагрузить устройство с помощью последовательного выключения, ожидания нескольких секунд и повторного включения.

Обратите внимание! Процесс перезагрузки может отличаться в зависимости от комплектации и технических особенностей устройств. У некоторых роутеров предусмотрена кнопка для выключения, у остальных такой функции нет, и приходится выключать его из сети.

Если перезагрузка не помогла, и прямое подключение кабеля с компьютером работает корректно, рекомендуется обратиться за помощью к специалисту.

Вмешательство антивирусной системы

Подавляющее количество антивирусных программ блокируют установочные файлы из неизвестных источников ввиду их опасности для системы и компьютера в целом. При загрузке установочного файла или архива с .exe файлами, при уверенности в их безопасности можно занести сайт или конкретный файл в белый список антивирусной системы.

Алгоритм действий по редактированию белого списка в антивирусном программном обеспечении индивидуален для каждой из систем, и зависит от программы. Как альтернативный вариант можно временно отключить работу антивируса.

Важно! Даже кратковременное отключение антивирусной системы может открыть уязвимость компьютера к угрозам. Никогда не отключайте защиту, если не являетесь опытным пользователем компьютера.

Файл может быть опасен — как отключить в Яндексе?

Убрать такое уведомление при загрузке в Yandex браузере можно перечисленными выше способами. Но если проблема не устранена, дополнительно следует «навести порядок» в функции Protect.

Ошибка Файл может быть опасен

  • Запускаем веб-обозреватель, в адресной строке вводим следующую ссылку:
  • Оказываемся в разделе «Безопасность» и сразу обращаем внимание на опцию проверки запускаемых сайтов и загружаемых файлов. Снимаем отметку, закрываем программу и запускаем повторно:

Параметры безопасности Protect в Yandex

Но не стоит забывать об антивирусах. Не только встроенный Windows 10 Defender может блокировать скачивание в Гугл Хроме и Яндексе, но и сторонние утилиты. При необходимости — следует также поискать в их параметрах соответствующие решения (онлайн-сканер, real-time protection и т.д.).

Вмешательство вирусов

Нередко причиной некорректной работы любого программного обеспечения, включая интернет-браузеры может быть присутствие вирусов в файловой системе компьютера. Если все вышеуказанные способы не помогли, и не знаете что делать если загрузка прервана, вполне возможно, что это работа вирусов.

Поиск нежелательных файлов на компьютере, потенциально блокирующих загрузку из сети – это задача антивирусных систем. Проведите полное сканирование файловой системы компьютера, удалите возможные угрозы, после чего повторите попытку загрузки в браузере.

Решение проблемы прерванной загрузки в обозревателе от Яндекс простое. Если с помощью инструкции решить её не удалось, лучше обратиться к профильному специалисту.

Видео

Вопрос от пользователя

Здравствуйте.

Подскажите, почему uTorrent может совсем не качать файлы? Я уже пробовал разные торрент-трекеры, разные файлы — всё равно не загружает, не знаю, что делать. Подскажите, что-нибудь хоть…

Думаю, что не Вы первый, не Вы последний, кто столкнулся с подобной проблемой. Вообще, обычно, она носит временный характер и чаще связана с тем, что просто нет тех людей, кто раздает данный файл. Но вот проходит час-два, день, а файл(ы) все не загружаются… (нужно что-то делать ☻)

1. response.ContentType = 'application/download'
2. response.AddHeader 'content-disposition','attachment;filename='&szDownLoadFileName&szDow nLoadFileExt
.
n. передача бинарных данных
.

1. Если загружать файл через window.open('download.asp'.
то:
1.а) открывается окно браузера и окно скачивания файла, причем окно браузера не закрывается.
1.б) если убрать строку №2 - окно браузера автоматически переходит в окно скачивания файла, однако у передаваемого файла будет имя asp файла, т.е. download.asp

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

проблема сдоступом к БД через ADO в ASP: на ASP выдает ошибку что не может найти имя источника данных и драйвер
не могу подключиться к БД (которая лежит на сетевом диске) прописаной в ODBC через ASP хотя на.

Download file asp ajax
Добрый вечер, подскажите пожалуйста, вызываю метод через ajax который возвращает файл, return.

Проблема коннекта через ODBC: Data source name not found and no default driver specified /sbms/main.asp, line 72
Помогите. На Windows 98 все работало просто замечательно. Поставил Windows XP и IIS 5.0 При попытке.

Описание проблемы:
Во превых есть система с Iframe, в данном фрейме перегружается динамическая информация и т.п. При вызове из <A href='download.asp'>
данные скачиваются но после этого к всему сайту приходит 'Access denied'.

данную проблему можно решить следующим образом
<A href='javascript : top.location.href = 'sY_download.asp. ''>download file
после этого все работает нормально и сессия не теряется, т.е. пока ошибок не заметил

P/S: замечена следующая ошибка в Netscape 6 содержимое файла вываливается в браузер ( как есть в бинарном виде). Как ее решить?

Вопрос есть по IFRAME :-)

Итак.. есть страничка list.asp с выборкой из БД
Код ейный:
<IFRAME src='about :blank' frameborder='0' height='0' width='0'></IFRAME>
<A href='javascript :void(0);' OnClick='buffrm.location.href='file.asp''>download file

В файле file.asp код:
<% Response.ContentType = 'application/download'
Response.Addheader 'Content-Disposition', 'attachment; filename=' & '1111.txt'
Response.BinaryWrite('бла бла бла')
%>

При клике на 'download file' окошко save as появляется НО с предложением сохранить list.asp ;-( Вопрос-как даунлодить бинарные данные из file.asp а не код list.asp

p.s. просто вызов file.asp корректен .
Сделано так из за бага мелкософта и нежелания открывать доп окно при даунлоде файликов

Привет Oswald!
Есть сомнения в правильности изложения:
1. Во первых окошко даунлоад должно содержать имя указанного файла в content-disposition
+ необходимо чтобы в файле не было ничего лишнего, т.е. только код
<%
код для дайнлоада
%>
2. было замечено что используя response.binarywrite на комп сохраняются данных в unicode а при response.write в ascii формате но при появлении '*' (из С - null) контент потока обрывается
из предыдущих дискусий на эту тему было зпредложено следующее

szTemporaryFilePath - путь к скачиваемому файлу

'method 1
'Set szStream = oFso.OpenTextFile( szTemporaryFilePath, 1, FALSE, 0)
'Do while not szStream.AtEndOfStream
'BinArray = BinArray & chrB(asc(szStream.Read(1)))
'Loop
'Response.BinaryWrite BinArray
'szStream.Close

(это по поводу бинарности передаваемых данных)

3. Если же к тебе(машине-клиенту) приходит файл с кодом асп, то это явный баг. Поэтому подробнее укажи машину-сервер ( ИИС и патчи если есть), машину-клиента (ИЕ).

Реализовать закачку файла через ASP.
Стоит следующая задача: Реализовать закачку файла через ASP. Т.е пользователь щелкает на ссылку с.

ASP+Word через COM. Отключение опций doc-файла
Добрый день! Есть веб-приложение на VBScript, через него пользователи получают файлы в формате.

Проблема с чтением текстового файла через FileSystemObject
сабж а поподробнее будет так: есть текстовый файл, досовский, в нём помимо текста встречаются.

Скачивание файлов из веб

Скачивание распространённая функциональность интерактивных сайтов. Бесчисленное множество файлов различного содержимого скачивается в интернете каждую секунду. Компьютеры, планшеты, смартфоны с разными операционными системами активно участвуют в скачивании файлов.

Функциональность Download - это возможность скачивания файлов с серверной стороны на клиентскую машину. В результате этой операции копия файла, находящегося на сервере, сохраняется на машине клиента.

Способностью отсылать файлы клиентам обладают и HTML статические страницы и конечно же динамические интерактивные сайты. Download гораздо безопасней своей парной операции Upload, когда пользователи загружают, иногда спамовые и вредные, файлы на сервер.

Способы отправки файлов

HTML способ скачивания файлов

Для скачивания файлов HTML тег гиперссылки должен содержать атрибут download. Данный атрибут определяет, что целью гиперссылки будет скачивание файла, но не его открытие в браузере. В атрибуте можно определить желаемое имя скачиваемого файла.

Представление получает через свойство модели ListFiles список файлов доступных для загрузки клиентами сайта. Названия файлов, размер и кнопки загрузки образуют пользовательскую таблицу. Каждая кнопка, ответственная за загрузку файла имеет атрибуты asp-route-, добавляющие в строку запроса два параметра: file - имя файла и mode - способ загрузки. В зависимости от значений этих параметров пользователю веб-страницы отправляется выбранный файл указанным способом. Ниже мы увидим, что веб-страницы шаблона Razor Pages и MVC, за исключением небольших различий, имеют практически одинаковый код.

Таблица списка файлов веб-страницы представления MVC

Методы контроллера для отправки файлов

Унифицированный метод SelectiveResult(. ) выдаёт соответствующий результат в зависимости от значений аргументов: file - имени запрошенного файла и переменной mode, выбранного режима скачивания. Если имя файла равно null, пользователю показывается веб-страница со списком доступных файлов. Если переменная file имеет значение, метод "переключается" на отправку файлов выбранным способом, в зависимости от значения mode.

Листинг action-методов контроллера

Программные коды отправки файлов

Отправка через виртуальный путь

В VirtualDownload(FileInfo fi) главным исполнителем отправки файла клиенту выступает метод File(virtualPath, contentType, fi.Name) возвращающий результат в виде экземпляра класса VirtualFileResult . Данный метод по функциональности одинаков с классическим HTML для скачивания файлов. Указывается виртуальный путь относительно хоста и далее вступают в действие серверная логика отправки контента.

Отправка массива байтов

Отправка открытием потока

HTML код Razor Pages

Интеллектуальный синтаксис Razor гармонично вливается в разметку гипертекста и создаёт пользовательскую таблицу с параметрами для скачивания файлов. Буквально один символ @ выделяет разметку Razor, не нарушая видимую структуру HTML кода. Таблица аналогичная таблицам представлений MVC каркаса, описанного выше. В листинге показан только код формирования списка файлов. В коде разметки также присутствуют asp-атрибуты для однозначного определения выбранного пользователем файла для скачивания.

HTML код страницы Razor Pages.

Метод OnPostAsync Razor Pages

Post-запросы, инициированные кнопками загрузки отлавливает метод OnPostAsync(string file, string mode) класса модели связанного со страницей представления. Данный метод играет роль контроллера: в зависимости от входных данных выдаёт соответствующий результат. Пользователь отправляет POST-запрос с двумя параметрами, на основании аргументов file, mode OnPostAsync(. ) однозначно находит в списке запрошенный файл и вычисляет способ отправки.

Листинг метода OnPostAsync(. )

Буферизация в MemoryStream

Ещё один способ отправки, применённый в коде сайта Razor Pages, использует буферизацию файла в оперативной памяти. Отображение содержимого файла в памяти позволяет веб-приложению на ходу изменять или создавать новый контент по запрошенному названию. Такой вариант отправки имеет недостаток: при значительных размерах файла использование памяти может быть критичным. Но отправка буферизацией в памяти отлично подходит для небольших файлов: изображений, документов и т.п.

Потребление оперативной памяти при буферизации

Использование оперативной памяти при буферизации скачиваемых файлов

Методы отправки BytesDownload(FileInfo fi) и MemorySend(FileInfo fi) используют буферизацию в памяти сервера (см. выше). Данные способы не желательно применять для больших файлов (высказывание относительно и зависит от конфигурации сервера).

Использование память для временного хранения контента сайта может негативно отразиться на работе сайта. На изображении сеанс диагностики среды Visual Studio при скачивании видеофайла размером 1,5 ГБ способами буферизации в памяти. Во время сеанса скачивание потребление оперативки возрастает до 2 ГБ.

Потребление ресурсов без буферизации

Оперативной память без буферизации

Если доверить отправку контента внутренней логике хоста, то скачивание файлов происходит максимально экономно для сервера. Методы VirtualDownload(FileInfo fi) и StreamDownload(FileInfo fi) работают по такому принципу (см. выше).

На скриншоте сеанс диагностики во время отправки видеофайла 1,5 ГБ без буферизации в памяти. Обеспечение скачивания файлов методами VirtualDownload(FileInfo fi) и StreamDownload(FileInfo fi) происходит максимальная экономия аппаратных ресурсов.

Медленные и сбойные соединения давно являются проблемой для скачивания больших файлов. Вы можете находиться в главном вестибюле аэропорта, собирая медийную информацию по нестабильному соединению через Wi-Fi, чтобы потом поработать над какой-нибудь презентацией в течение долгого перелета, или в африканской саванне, пытаясь скачать большой установочный файл по спутниковой связи для водяного насоса, работающего на солнечной энергии. В любом из этих примеров цена неудачи при скачивании большого файла одна и та же: потеря времени, неэффективный труд и риск для успешной работы.

Дело не обязательно должно обстоять таким образом. В этой статье мы покажем, как создать утилиту, которая устраняет проблему возобновления и продолжения сбойных скачиваний из-за плохих соединений, подверженных отключениям при передаче больших файлов.

Обзор

Мы хотели создать несложную утилиту для скачивания файлов, которую можно было бы легко добавить на ваш существующий IIS Web Server с крайне простой в использовании клиентской программой (или возможностью использования веб-браузера в качестве клиента).

По сути, нам нужна утилита для скачивания файлов (file downloader utility), которая могла бы скачивать огромные файлы для пользователей по всему миру, иногда находящихся в удаленных уголках планеты с медленными и часто сбоящими сетевыми соединениями. Из-за того, что некоторые удаленные пользователи все еще используют модемные соединения или сбойную спутниковую связь, которая может переходить в офлайн в произвольные моменты или периодически переключаться между онлайн и офлайн, этой утилите нужно быть крайне устойчивой с возможностью повторных попыток заново скачивать только те части файла, которые не удалось скачать. Мы не хотели, чтобы пользователь провел всю ночь, скачивая огромный файл по медленному соединению, и при малейшем сбое в сетевом соединении заново начинал весь процесс скачивания. Нам также требовалось обеспечить, чтобы эти скачиваемые огромные файлы не буферизовались в памяти сервера и чтобы нагрузка на нее была минимальной и не росла, когда множество пользователей одновременно скачивают файлы.

Вы можете практически исключить негативное влияние сбойного соединения, которое постоянно переходит в офлайн.

И напротив, если у пользователя имеется надежное высокоскоростное сетевое соединение и при этом клиентская и серверные машины являются компьютерами класса «high-end», оборудованными несколькими процессорами и сетевыми картами, нам было нужно, чтобы этот пользователь мог скачивать файл с помощью нескольких потоков и соединений, что позволяет скачивать множество порций файла параллельно, используя все аппаратные ресурсы, в то же время создавая минимальную нагрузку на память сервера.

Если в двух словах, то мы создали простую, многопоточную, параллельную, мало нагружающую память утилиту для скачивания файлов, способную разбивать файл на порции (части), скачивать индивидуальные порции в раздельных потоках и разрешать повторные попытки скачивания только тех порций, которые не удалось скачать.

Проект-пример, сопутствующий этой статье, содержит код этой утилиты и предоставляет рудиментарную базовую инфраструктуру, которую можно расширять по мере необходимости.

Обзор проекта-примера

По сути, DownloadHandler.dll преобразует существующий IIS Web Server в многопоточное средство для скачивания файлов, которое позволяет скачивать файл параллельными порциями, используя простой URL из автономного исполняемого клиента (FileDownloader.exe), как показано на рис. 1. Заметьте, что параметр (chunksize=5242880) не обязателен, и, если он не включен, весь файл будет скачиваться одной порцией. На рис. 2 и 3 демонстрируется, как это позволяет повторно запрашивать только те порции файла, которые не удалось скачать, без необходимости заново начинать весь процесс скачивания. Этим наша утилита выгодно отличается от другого программного обеспечения для скачивания файлов.

Рис. 1. Высокоуровневая схема потока обработки для DownloadHandler.dll (FileDownloader.exe используется как клиент)

Высокоуровневая схема потока обработки для DownloadHandler.dll (FileDownloader.exe используется как клиент)

Автономный исполняемый файл в качестве клиента скачивания (после повторной попытки)Автономный исполняемый файл в качестве клиента скачивания (после повторной попытки)

Рис. 2. Автономный исполняемый файл в качестве клиента скачивания (со сбойными порциями)

Автономный исполняемый файл в качестве клиента скачивания (после повторной попытки)

Рис. 3. Автономный исполняемый файл в качестве клиента скачивания (после повторной попытки)

Конструкция Parallel.ForEach изначально предназначена для работы, требующей интенсивного использования процессора, и никогда не должна применяться в серверной реализации из-за ее блокирующей природы. Мы перекладываем эту работу на поток порта завершения из CLR ThreadPool вместо обычного рабочего потока из того же пула, чтобы предотвратить исчерпание тех же потоков, используемых IIS для обслуживания входящих запросов. Кроме того, более высокая эффективность выполнения этой работы портом завершения в какой-то мере ограничивает потребление потоков на сервере. В разделе comment в начале класса IOThread (из пакета сопутствующего исходного кода) присутствует схема с более подробным пояснением, где выделены различия между потоками порта завершения и рабочими потоками в CLR ThreadPool.

Разницу можно проиллюстрировать на гипотетическом примере. Допустим, вы собираетесь скачать большой файл, что займет всю ночь. Располагая загрузчиком файлов с возобновлением, вы оставляете его работать. Придя утром на работу, вы видите, что этот загрузчик потерпел неудачу на 10% и готов к возобновлению процесса скачивания. Но, когда он возобновляет скачивание, ему все равно снова понадобится вся ночь, чтобы скачать оставшиеся 90%.

И напротив, вы запускаете наш загрузчик файлов с повторением, уходя с работы и оставляя его работать на ночь. Придя утром на работу, вы видите, что скачивание оказалось неудачным только для одной порции файла на 10%, но остальные порции файла продолжали скачиваться. Теперь вам остается лишь повторить скачивание всего одной порции, и все готово. Встретив ту сбойную порцию из-за временного прекращения работы сетевого соединения, утилита продолжила и закончила скачивание остальных 90% за остальную часть ночи, когда сетевое соединение вернулось в онлайн.

На рис. 4 дана высокоуровневая схема при использовании DownloadHandler.dll с веб-браузером, который не поддерживает частичный контент при скачивании. Она иллюстрирует поток обработки при прохождении порций файла с жесткого диска серверной машины через DownloadHandler.dll и веб-браузер в файл на жестком диске клиентской машины с этим браузером.

Рис. 4. Высокоуровневая схема потока обработки для DownloadHandler.dll (при использовании веб-браузера, который не поддерживает частичный контент как клиент)

Конфигурация проекта-примера

Для проекта-примера просто скопируйте DownloadHandler.dll и IOThreads.dll в каталог \bin в виртуальном каталоге и поместите следующую запись в разделы handlers и modules файла web.config:

Вот и все. Ничего особо сложного.

Важные факторы

Наиболее важный фактор, определяющий проект, — не в том, чтобы его архитектура обеспечивала более высокую производительность, а в повышении надежности и отказоустойчивости при простоях сети, вызванных нестабильными сетевыми соединениями, периодически переходящими из онлайн в офлайн.

Как правило, скачивание одного файла одной порцией по одному соединению обеспечивает максимальную пропускную способность. Но бывают некоторые уникальные исключения из этого правила, такие как серверные среды с зеркалированием, где файл скачивается отдельными частями, причем каждая часть файла извлекается с другого сервера-зеркала, как показано на рис. 5. Но в целом, скачивание файла в нескольких потоках на самом деле медленнее, чем в одном потоке, потому что узким местом обычно является сеть. Однако возможность повторного запроса только тех частей файла, которые не удалось скачать, причем до тех пор, пока они не будут успешно загружены, без необходимости заново начинать весь процесс скачивания обеспечивает то, что мы предпочитаем называть псевдо-отказоустойчивостью (quasi-fault tolerance).

Рис. 5. Гипотетические будущие расширения для симуляции крайне рудиментарной инфраструктуры зеркалирования

Рис. 5. Гипотетические будущие расширения для симуляции крайне рудиментарной инфраструктуры зеркалирования

Mirror Server Environment Серверная среда с зеркалированием
Node Узел
IIS IIS
Client Node Клиентский узел
Exe Exe
file.txt file.txt
Gets all the individual pieces of file from mirror nodes in parallel Получаем все индивидуальные части файла параллельно с узлов-зеркал
Writes all the individual pieces of file to client using overlapped file I/O Записываем все индивидуальные части файла на клиенте, используя перекрытый файловый ввод-вывод
Web Request URL: URL веб-запроса:
(Range: bytes=0-5242880 is appended to web request) (Range: bytes=0-5242880 добавляется в веб-запрос)
(Range: bytes=5242880-10485760 is appended to web request) (Range: bytes=5242880-10485760 добавляется в веб-запрос)
Client URL: URL клиента
Verifies MD5 matches after copy complete По окончании копирования проверяем контрольную сумму MD5
Parallel.ForEach iterates string split of “node name:byte range” query string parameter and sends Web request to that mirror node requesting that byte range, instead of iterating splitting total file size into chunks Parallel.ForEach разбирает в цикле строковый параметр запроса на части вида «node name:byte range» и посылает веб-запрос указанному узлу, запрашивая от него этот диапазон байтов, а не разбивает весь файл на порции

Кроме того, если бы кто-то в будущем расширил проект для симуляции крайне рудиментарной инфраструктуры зеркалирования, продемонстрированной на рис. 5, это позволило бы добиться того, что можно было бы считать псевдо-избыточностью.

По сути, этот проект позволяет надежно скачивать файл по ненадежной сети. Короткие прерывания в работе вашего сетевого соединения не означают, что вам нужно начинать все с начала; вместо этого вы скачиваете только порции, которые не удалось скачать. Неплохим расширением проекта (которое сделало бы его еще более отказоустойчивым) было бы сохранение текущего состояния прогресса скачивания в каком-нибудь файле на жестком диске, чтобы вы могли выполнять повторные попытки для неудачных загрузок между запусками клиентского приложения и даже между перезагрузками клиентского компьютера. Но это упражнение мы оставим читателям.

Есть еще три фактора, гораздо менее важных, но, тем не менее, их стоит принять во внимание.

Во-первых, поскольку проект включает как клиент, так и сервер, у вас есть полный контроль над конфигурацией на серверной стороне. Это дает вам полную свободу в настройке конфигурационных параметров, которые зачастую сильно затрудняют процесс скачивания файлов с серверов, принадлежащих сторонним лицам и находящихся вне вашего контроля. Например, вы можете настроить ограничение по числу соединений с каждого клиентского IP-адреса в сторону увеличения лимита против обычных двух соединений. Вы также можете убавить ограничение по скорости для каждого клиентского соединения.

Короткие прерывания в работе вашего сетевого соединения не означают, что вам нужно начинать все с начала; вместо этого вы скачиваете только порции, которые не удалось скачать.

Будущие расширения

Код проекта-примера обеспечивает лишь минимальную базовую функциональность, необходимую для работы утилиты для скачивания файлов. Нашей целью было поддержание простоты проекта и легкости его понимания, чтобы его можно было относительно легко использовать как базис для дальнейшего расширения. Это просто отправная точка и базовый шаблон. Перед его коммерческим использованием абсолютно необходимо внести много расширений. Добавление более высокоуровневых абстракций, обеспечивающих дополнительную, более продвинутую функциональность, мы оставляем читателю в качестве упражнения. However, мы разъясним некоторые из критически важных улучшений.

На практике это, по-видимому, потребует создать тот или иной уровень кеширования, который в фоновом режиме обработает файл для вычисления контрольной суммы MD5 только один раз и сохранит полученную хеш-сумму в словаре, где имя файла будет использоваться как ключ. Тогда для получения хеш-суммы файла серверу потребуется лишь простой поиск по словарю, и эту хеш-сумму можно будет моментально добавлять в заголовок при передаче файла с минимальной нагрузкой на процессоры сервера.

Мы хотели предоставить вам простую и понятную базу, включающую лишь необходимый минимум.

Код проекта примера в настоящее время также не ограничивает клиент от использования гигантского количества потоков и может разбивать файл на слишком много порций, если размер файла велик. Это, конечно, позволяет клиенту делать то, что ему нужно для гарантированного скачивания файла. Но на практике понадобится какая-то инфраструктура, способная накладывать ограничения для клиента, чтобы один клиент не умудрился «положить» сервер и заставить ждать все остальные клиенты.

Если файл зеркалируется на 10 серверах, проект можно было бы модифицировать для получения части 1 файла с зеркальной копии сервера 1, части 2 с зеркальной копии сервера 2 и т. д. И вновь важно вычислять контрольную сумму MD5 файла после получения всех его частей и их сборки на клиенте, чтобы быть уверенным в том, что ни одна из частей не повреждена и что вы действительно получили весь файл. Можно было бы даже выйти на новый уровень и использовать территориально распределенные серверы с определением наименее загруженных из них в данный момент.

Заключение

Мы не ставили целью нашего проекта создание более быстрой и масштабируемой утилиты для скачивания файлов, а хотели разработать такую программу, которая чрезвычайно устойчива к периодическим отказам сети.

Выражаем благодарность за рецензирование статьи экспертамMicrosoft Стивену Клири (StephenCleary) и Джеймсу Маккафри (JamesMcCaffrey).

Рисунок улитки и ноутбука

Причины проблем с загрузкой файлов с Интернета

Анализ того, почему не скачиваются файлы из сети Интернет, следует начать прежде всего с причин, которые вызвали данную ситуацию. Среди них я бы отметил следующие:

Настройки безопасности ПК

  • Вредоносное действие вирусных программ, блокирующих загрузку внешних файлов;
  • Блокировка антивируса или брандмауэра;
  • Проблемы с конкретным браузером;
  • Случайный сбой в системе;
  • Действие какого-либо приложения (часто из недавно установленных в системе), которое блокирует загрузку (особенно речь идёт о всяческих программах-загрузчиках типа Download Master или разнообразных «ускорителях Интернета» типа Savetraf, Sprint и прочих подобных);
  • Проблемы функционала какого-либо конкретного сайта (с другого сайта всё скачивается без проблем);
  • Выставленный максимальный уровень безопасности в настройках свойств Интернета на ПК;
  • Стохастические проблемы с интернет-подключением.

Итак, после того, как мы разобрали причины, по которым не скачиваются файлы с Интернета, предлагаю перейти к списку советов по исправления ситуации.

Если у вас не работает загрузка файлов с Интернета на ваш ПК, рекомендую воспользоваться нижеприведёнными советами. Итак.

  1. Перезагрузите ваш ПК. Стандартный совет, при этом достаточно эффективный;
  2. Сбросьте настройки вашего браузера (например, в Mozilla введите в адресной строке about:support, и нажмите на кнопку «Очистить Firefox» справа);
  3. Проверьте ваш компьютер на наличие вирусных программ. Очень часто именно различные зловреды являются причинами описываемой проблемы. Используйте проверенные антивирусные инструменты Dr.Web CureIt!, Trojan Remover, Malware Anti-Malware, Kaspersky Removal Tool и другие.

Вирус на ПК

Удалите вирусные программы с ПК

Опции очистки истории браузера

Очищаем историю загрузок

Почему не грузятся файлы с Интернета

Если всё работает хорошо, значит проблема в выключенных службах. Теперь вновь вызовите данное меню, но поставьте галочки на половине из них и вновь перезагрузитесь. Если проблемы вновь нет, тогда виновник – одна из пока ещё отключенных служб. Делайте так до тех пор, пока не идентифицируете виновника, затем его можно попросту отключить или пофиксить.

  1. Отключаем TCP Receive Window Auto-Tuning. Запустите командную строку от имени администратора и там введите netsh int tcp set global autotuninglevel=disabled, затем нажмите на ввод;
  2. Временно отключите антивирус и файервол, они могут быть источниками множества проблем;
  3. Попробуйте выполнить откат системы на точку восстановления, когда данной проблемы не наблюдалось, это может помочь в вопросе, почему не скачиваются нужные файлы с Интернета на компьютер.

Как увеличить скорость скачивания с Сети [видео]

Выше я рассмотрел основные факторы того, почему не сохраняются файлы из сети Интернет на ПК. Данное явление может иметь множество причин, при этом статистически наиболее вероятностной из них является заражение компьютера различными вирусными программами, блокирующими нормальную работу компьютера с сетью Интернет. Воспользуйтесь приведёнными мной выше советами, один из них обязательно окажется для вас наиболее эффективным, и поможет решить проблему с загрузкой файлов на вашем ПК.

Читайте также: