Лучший способ убедиться, что пользователь не загружает изображения размером более 1 МБ

StackOverflow https://stackoverflow.com/questions/810886

Вопрос

Я использую ASP.net с VB.NET.Есть ли какой-нибудь валидатор, который я могу использовать, который проверит размер загруженного изображения?Еще, что я должен сделать в коде, чтобы убедиться, что пользователь не загружает изображения размером более 1 МБ?

p.s Код C # тоже подойдет, я могу использовать конвертер для VB.NET

Редактировать

По какой-то причине, когда я меняю maxRequestLength на 1024 (в моем WEB.config) и загружаю изображение размером 1,25 МБ, я получаю страницу ошибки Microsoft с надписью "Internet Explorer не может отобразить веб-страницу".И у меня действительно есть блок Try Catch внутри моей кнопки отправки.Если я удалю maxRequestLength из своего Web.config, то он будет работать нормально.

Это было полезно?

Решение

В конечном счете это обрабатывается в Web.config.Посмотрите на раздел HttpRuntime:

<httpRuntime 
 executionTimeout="110" 
 maxRequestLength="4096" 
/>

В HttpRuntime есть много других настроек, но это те две, которые имеют отношение к делу.Здесь maxRequestLength устанавливается равным 4096, или 4 КБ (число указано в байтах).Итак, установите это значение соответствующим образом.Кроме того, вы также захотите соответствующим образом установить executionTimeout, чтобы это давало разумное количество времени для загрузки того, что вы загружаете максимально.

Другие советы

Вы можете использовать следующий код для определения размера [в КБ] загружаемого файла, и как только вы узнаете размер, вы сможете легко решить, хотите ли вы продолжить работу с файлом или отклонить загрузку.

Request.Files(0).ContentLength / 1024

Ошибка не удается отобразить веб-страницу возникает из-за того, что ASP.NET разрывается соединение для чрезмерно загруженных запросов для предотвращения DOS-атак, основанных на чрезмерно загруженных запросах.Чтобы обойти это, вам нужно было бы выполнить загрузку в iframe, а затем определить, произошла ошибка или нет.Вы также можете использовать компонент flash, silverlight, java или activex uploader, установленный на клиенте, для проверки размера файла на стороне клиента, но это потребует установки в зависимости от вашего решения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top