Элегантный обработчик 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. С его помощью вы можете выполнять асинхронную загрузку, так что вы даже можете добавить хороший индикатор выполнения, учитывая, что файл довольно большой.