Элегантный обработчик maxrequest

Еще один вопрос от меня. Это будет нелегко!

У меня проблемы с обработкой простой загрузки. Предварительные требования для тестирования: - Без Flash (угон) - Базовое использование поля загрузки + форма для публикации - Максимальный размер файла составляет 20 МБ (web.config maxrequestlength) - Я запускаю веб-сайт со встроенным инструментом визуального развития IIS в визуальном студия (я думаю) - я использую веб-проект MVC

Вопрос: можно ли показать пользователю красивое сообщение об ошибке, если размер файла превышает 20 МБ? (Без предварительной передачи всего файла на сервер)

Эти ссылки помогли мне больше всего:

http://www.telerik.com/community/forums/aspnet/upload/maximum-request-length-exceeded.aspx

ASP.NET MVC: обработка загрузки превышает maxRequestLength

http://forums.whirlpool.net.au/archive/809909

http://forums.asp.net/t/1106579.aspx/1

Перехват "Превышена максимальная длина запроса"

Но все же я не смог решить проблему. Я использую код принятого ответа последней ссылки ( Catching "Превышена максимальная длина запроса"), но мой код вылетает, когда я запускаю строку кода ниже:

this.Server.Transfer("~/error/UploadTooLarge.aspx");

Сообщение об ошибке: Ошибка при выполнении дочернего запроса для ~/error/UploadTooLarge.aspx.

Я думаю, что получаю это сообщение, потому что я использую сборку VS.NET на веб-сервере (см. http://forums.asp.net/t/1106579.aspx/1 последний пост этой страницы).

Я боюсь, что сделал весь вопрос немного трудным для чтения. Вкратце: как я могу показать аккуратное сообщение об ошибке, когда загруженный файл слишком велик (используя сборку S.NET на веб-сервере)?

1 ответ

Если вы не хотите сначала отправлять файл целиком на сервер, тогда единственным вариантом будет javascript. Объект FileReader решит это для вас https://developer.mozilla.org/en-US/docs/DOM/FileReader Проблема в том, что он не будет работать в старых браузерах. Теперь, если старые браузеры не являются для вас проблемой, вы должны найти множество учебных пособий, показывающих, как использовать объект FileReader. С его помощью вы можете выполнять асинхронную загрузку, так что вы даже можете добавить хороший индикатор выполнения, учитывая, что файл довольно большой.

Другие вопросы по тегам