Мне нужна поддержка большого скачивания файлов в моем поддерживаемом средстве доверия asp.net.
Очевидно, что он должен быть отзывчивым с указанием прогресса, поэтому важно управлять потоком.Среднее доверие к загрузке большого файла в Asp.Net
Это все кажется довольно простым и хорошо работает при полном доверии:
1. Запишите HttpModule, который прослушивает загрузку файлов.
2. Извлеките объект HttpWorkerRequest из контекста, используя отражение.
3.Write из потока в FileStream
Все очень хорошо, кроме того, что я получаю исключение разрешений при попытке получить HttpWorkerRequest объект из контекста в среде доверия. Использую ли я отражение или использую System.IServiceProvider.GetService(), чтобы получить объект (который явно использует отражение), я получаю ту же ошибку.
Я также попытался использовать System.Web.HttpPostedFile. Он имеет свойство InputStream. Но, похоже, этот объект загружает весь файл при инициализации, поэтому ничего хорошего.
Я устал от усталости и не могу найти другую альтернативу.
Даже если это риск для безопасности, чтобы пользователи могли иметь HttpWorkerRequest объект, безусловно, основа обеспечивает другой способ обработки потока файлов при Method = «POST» и ENCTYPE = «многочастному/форм-данных»
Любые идеи были бы замечательными
Спасибо
Я дал это выстрел. В тот момент, когда я попытался прочитать() из потока, браузер загрузил весь файл. Таким образом, это разыгрывает цель. – johnDisplayClass
@slightlyannoyed, как вы читаете поток? Вы не должны загружать весь поток в буфер. Вам нужно прочитать его в кусках и сразу написать куски в другой поток (например, поток файлов). –
Да. Я читаю куски. 4096 байт за раз, чтобы быть конкретным. Вызов метода Read(), похоже, выполняет свою работу до тех пор, пока я не кушаю кусок. Но прежде чем он вернет этот первый фрагмент, фреймворк извлекает весь файл из браузера без моего согласия. Имеют смысл? – johnDisplayClass