2012-05-30 2 views
24

Я реализую плагин для загрузки файлов на основе jquery http://blueimp.github.com/jQuery-File-Upload/. Существует пример приложения MVC3, которое вы можете скачать https://github.com/maxpavlov/jQuery-File-Upload.MVC3.MVC3 Action File Limit

Автор образца имеет комментарий в главном Виде:

@ * ДЛЯ ИСПОЛЬЗОВАНИЯ MVC ДЕЙСТВИЙ КАК обработчиков AJAX звонков, воспользуйтесь формой ниже заявлением. (THE ONE закомментирована) Не советуется SINCE ПРИ ИСПОЛЬЗОВАНИЯ MVC контроллера для обработки запросов не может контролировать maxMessageLength-запрос ПОЧТЫ ЭТО слепками функциональности ЗАГРУЗКИ больших файлов USELESS, ЕСЛИ ВЫ НЕ SUCRIFICE БЕЗОПАСНОСТИ И ПОЗВОЛИТЬ БОЛЬШОЙ РАЗМЕРЫ ПОСЛЕ СООБЩЕНИЙ НА САЙТЕ.

ЛУЧШЕ ИСПОЛЬЗОВАТЬ HTTP обработчик процесса загрузки ЗАПРОСОВ ПОКА MVC ОСНОВА НЕ ДАЕТ способ установки maxMessageLength НА НА ОСНОВЕ ДЕЙСТВИЯ * @

Является ли это по-прежнему так?

Я узнал, что могу установить <httpRuntime maxRequestLength="x" /> в файле web.config, но я понимаю, что это уязвимость системы безопасности. Это так?

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

Update:

Согласно этому сообщению File Upload ASP.NET MVC 3.0 предельного размера файла по умолчанию 4mb. Я подтвердил этот предел http://msdn.microsoft.com/en-us/library/e1f13641.aspx и понял уязвимость.

Это единственный способ загрузить файл через действие контроллера за пределы 4 МБ?

ответ

48

Вы можете установить ограничение на размер загрузки в web.config для конкретного действия контроллера с помощью location элемента:

<configuration> 
    <location path="Home/UploadFiles"> 
     <system.web> 
      <httpRuntime maxRequestLength="40960"/> 
     </system.web> 
    </location> 
</configuration> 

Где Главная это имя контроллера и UploadFiles это имя действия. Предел размера составляет 40 МБ.

По-прежнему использование Http-обработчика для обработки файлов не является плохим решением, если вы спросите меня.

+0

Только то, что я искал. Благодаря! – Rich

+2

узел «location» xml должен быть дочерним ... «Конфигурация»? (в web.config). Можете ли вы указать, пожалуйста? – sports

+1

@sports Да, это дочерний узел . Оформить мой обновленный ответ. Спасибо за ваш вклад :) – lucask