Как лучше всего загружать файлы с помощью ASP.NET MVC 2?

Каков наилучший метод для загрузки файлов переменного размера (очень больших или очень маленьких в 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? Мне нужно вручную захватить другую ветку?

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

6
задан smartcaveman 25 January 2011 в 15:47
поделиться