Каков наилучший способ загрузки файлов переменного размера (очень большого или очень маленького размера в файловую систему приложения ASP.NET MVC 2)?
Это то, что я понимаю до сих пор:
Кажется, что есть два способа, которыми люди справляются с этим.(Предположим, что файлы могут быть очень большими или очень маленькими)
(1) Обработать загрузку в действии контроллера с помощью Request.Files
или HttpPostedFileBase
, что, по-видимому, имеет недостаток, заключающийся в длительном использовании, посколькуASP.NET загружает файлы в активную память.
или
(2) перехватывает загрузку файла на раннем этапе с помощью модуля HttpModule, который каким-то образом обходит проблему производительности.(Я немного пасмурно из-за того, как это работает, но я использовал этот пост http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/ в качестве ссылки). Часть, о которой я размышляю, заключается в том, в какой момент ASP.NET загружает отправленные файлы в активную память, и как перехват этого в модуле фактически изменяет это поведение.
Со второго вариантабыстрее, кажется, лучший вариант.Но похоже, что приложение, отправляющее форму загрузки, вероятно, будет иметь некоторые данные, связанные с файлом, которые необходимо сохранить в базе данных.Я не хочу делать постоянные вызовы в моем HttpHandler или HttpModule (потому что тогда у меня будут две очень похожие функциональности, встречающиеся в разных местах: контроллер и обработчик http).
Я думаю, что одним из обходных путей было бы сохранение местоположения целевого файла в HttpContext.Items, но это лучший способ?
Последнее беспокойство по поводу этогоЯ хочу визуализировать HttpResponse до окончания загрузки файла.Поэтому, если файл большой, я отправлю пользователю представление со значением статуса загрузки и сделаю вызовы AJAX, чтобы сохранить статус обновленным. Как отобразить результат, сохраняя процесс загрузки?Нужно ли делать AsyncHandler или AsyncController?Нужно ли вручную захватывать другую ветку?
Большое спасибо, ребята.Я знаю, что это много вопросов, и, вероятно, отражает общее отсутствие понимания о чем-то.Забавная вещь в общем отсутствии понимания состоит в том, что люди, у которых они есть, также имеют тенденцию испытывать недостаток в понимании того, чего им не хватает ... так что, если кто-то может указать мне правильное направление на этой ноте, я был бы признателен,