2010-10-26 3 views
4

В моей web.config, у меня размер загрузки файла ограничен 10 МБ:Handling файлы, загруженные с размером больше, чем maxRequestLength в web.config

<httpRuntime maxRequestLength="10000" /> <!-- file size limit in KB --> 

На моей странице, я проверяю, чтобы увидеть что пользователь не загружает файл размером более 5 МБ:

protected void cvImageSize_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    args.IsValid = (fupFile.PostedFile.InputStream.Length <= 5000000); 
} 

Если пользователь пытается загрузить файл 3 MB в это загружает нормально. Если пользователь пытается загрузить файл размером 7 МБ, на экран выводится сообщение об ошибке cvImageSize.

Если пользователь пытается загрузить файл размером 13 МБ ... сайт сбой. Я не уверен, что происходит, Firefox дает мне страницу с сообщением «Соединение было сброшено. Соединение с сервером было сброшено во время загрузки страницы.«

Есть ли какое-то исключение, которое я могу поймать, когда пользователь пытается загрузить файл с размером, большим, чем maxRequestLength? Я хотел бы показать пользователю сообщение об ошибке на странице, а не в основном сбой сайта.

+3

http://stackoverflow.com/questions/3007737/how-can-i-handle-maxrequestlength-exceptions-elegantly HTTP : //stackoverflow.com/questions/2756448/how-to-catch-configurationerrorsexception-for-violating-maxrequestlength http://stackoverflow.com/questions/1502371/how-can-you-know-that-current-request- превышает-maxrequestlength-in-asp-net – Carson63000

+0

Если какой-либо из ответов поможет вам с вашей проблемой, пожалуйста, отметьте соответствующий вопрос как ответ –

ответ

0

Основная проблема заключается в том, что на сервере происходит «проверка» (cvImageSize_ServerValidate). Это означает, что файл должен быть загружен первым для вашего кода на стороне сервера, чтобы его можно было проверить.

Поэтому, когда загружается файл большего размера (параметр web.config), сервер выдает исключение, и ваш код никогда не получит возможность проверить. Независимо от того, как вы его кубите, пользователю все равно придется загружать файл на свой сервер сначала для того, чтобы на сервере подавать жалобы или для проверки размера.

Если вы не в состоянии использовать html5 (и браузеры, совместимые) Html5 File Upload with Progress

Смежные вопросы