Когда файл запускается для загрузки, запускается ли код события обратной передачи до завершения загрузки файла?
Я пытаюсь понять, какой именно процесс происходит, когда пользователь отправляет данные обратно на сервер из веб-формы asp.net. Всегда ли загрузка файла завершается до начала обратной передачи или может ли некоторая обработка завершиться до окончания запроса.
Как часть этого вопроса, как получается, что некоторые люди могут оценить время, которое потребуется для загрузки определенного файла, так как они должны были бы иметь хотя бы некоторые знания о том, что происходит в коде, и этот файл тогда должен был бы предполагаться не загрузили полностью?
1 ответ
Веб-приложения, которые могут оценивать время загрузки и показывать прогресс, обычно используют сторонний плагин, который запускается на клиенте для загрузки (флэш-загрузчик, Silverlight-загрузчик, плагин Java, элемент управления ActiveX и т. Д.). Они обычно выполняют асинхронные обратные вызовы и управляют собственным сетевым подключением к серверу. Обычно это код на стороне клиента, который определяет скорость и скорость загрузки и тому подобное.
Стандартная поддержка HTTP для загрузки файлов через элемент управления вводом HTML не очень разумна. Поэтому, если вы используете элемент управления asp.net FileUpload (который просто отображает HTML-тег ввода в браузер), вам будет сложно получить запрос из кода страницы, пока вся загрузка файла не будет завершена.
Тем не мение; Вы можете перехватить запрос в модуле HttpModule до загрузки всего файла. Некоторые из более ранних событий в жизненном цикле asp.net сработают до завершения загрузки файла, но, честно говоря, я точно не знаю, насколько далеко вы получаете запрос, прежде чем он ожидает остальных данных. Я действительно знаю, что BeginRequest вызывается (я подключил здесь код для загрузки файлов).
Так что да, вы можете выполнить некоторую работу здесь, но ваша информация о содержании входящего запроса будет очень ограниченной в этот момент.