Звучит так, будто вы хотите избежать «белого экрана смерти» во время загрузки больших файлов. Если это так, вы можете захотеть взглянуть на элемент управления RadUpload Telerik , который предоставляет индикатор выполнения во время загрузки.
Если вы хотите свернуть свои собственные, я бы декомпилировал их пробную копию для идей. Я посмотрел на их источник таким образом, и они выполняют индикатор выполнения, комбинируя пользовательский HttpModule и HttpHandler вместе с их контролем. Обработчик направляет файл в потоковом режиме, в то время как модуль предоставляет информацию о процентах завершения или наоборот; Прошло несколько лет с тех пор, как я на это посмотрел.
Edit:
На самом деле, я пытаюсь выполнить обработку на стороне сервера, поскольку файл все еще загружается. Я хочу импортировать данные пользователя через HTTP, но хочу предоставить пользователю предварительный просмотр / параметры того, как мы будем обрабатывать их данные, пока файл все еще загружается (определения столбцов и т. Д.). В любом случае, мы примем файл как есть, поэтому загрузка не должна прерываться. Учитывая, что мне действительно нужно взаимодействие во время загрузки, основанное на чтении относительно небольшой части файла во время его загрузки, вы все равно порекомендовали бы такой же подход?
Ну ... это было бы очень трудно сделать, и это могло бы не работать кросс-браузерно, но это могло бы быть сделано с этим подходом.
Поскольку вполне возможно работать с входящим файлом в виде потока, как я уже упоминал, ваша первоначальная обработка может обновлять некоторое состояние как часть обработки этого потока. Если вы не обрабатываете как поток, вам нужно подождать полной загрузки файла, прежде чем вы сможете что-либо с ним сделать.
Проблема заключается в следующем: во время загрузки файла вы не можете больше взаимодействовать на основе HTML. Сообщение должно продолжаться без изменений, иначе загрузка не удастся. Элемент управления, на который я ссылаюсь, работает только потому, что большинство браузеров разрешают выполнение javascript и обновляют DOM страницы во время публикации.
Таким образом, для того, чтобы эта работа работала, вам необходимо обновить часть стандартизированного состояния на стороне сервера во время обработки файла в HttpModule, который передается обратно клиенту через вызовы XmlHttpRequest, обрабатываемые HttpHandler. Вы должны использовать чистый Javascript / DOM, чтобы обновить пользовательский интерфейс для пользователя.
Итак, как я уже сказал, он сложен и может быть ошибочным кросс-браузерным, но теоретически это может быть сделано.
Существуют оповещения, которые могут быть более стабильными, но не обязательно осуществимыми: вы можете создать элемент управления ActiveX или приложение Click-Once .NET, которое предварительно обрабатывает файл перед загрузкой и, возможно, даже асинхронно передает файл, пока пользователь продолжает просмотр. Некоторым пользователям может не понравиться этот вариант, и я не знаю подробностей вашего сценария развертывания, но это вариант.