Убедитесь, что размер загружаемого файла меньше, чем maxRequestLength, прежде чем происходит загрузка? - PullRequest
3 голосов
/ 23 ноября 2010

У меня есть форма с элементом управления FileUpload, где пользователи могут загружать изображения. Могу ли я убедиться, что размер файла загруженного изображения ниже настроенного maxRequestLength до загрузки, и тем самым предотвратить появление исключения, если размер файла слишком велик?

Моя первоначальная попытка просмотреть ContentLength из PostedFile элемента управления была безрезультатной, поскольку файл уже отправлен.

Я не заинтересован в увеличении maxRequestLength.

Ответы [ 4 ]

1 голос
/ 23 ноября 2010

С точки зрения удобства использования, простое сообщение, говорящее людям, что не стоит, будет иметь большое значение для предотвращения проблемы.

Затем вы можете попробовать это (YMMV): это всего лишь подсказка для браузера и зависит от браузера, поддерживающего синтаксис. Очевидно, что скрытое поле должно предшествовать вводу вашего файла (или в asp.net, вашем элементе управления загрузкой файлов, проверьте разметку в браузере).

<input type="hidden" name="MAX_FILE_SIZE" value="500" />
<input type="file" />

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

Находится на этой веб-странице и также на этой

0 голосов
/ 30 декабря 2010

Можно определить размер файла, который загружается, даже до того, как загруженный файл был полностью передан.Даже при использовании Internet Explorer.Используя заголовок длины содержимого HTTP!
В мире Java:
Прежде всего, если вы обработаете запрос, который поступит на сервер в первом сервлете / фильтре / контроллере до того, как будет обработана какая-либо предыдущая масса потока, вы сможете получить общий файл.размер в заголовке длины содержимого (request.getContentLength ()).

second - посмотрите на реализацию ajax, которая доказывает, что это возможно: http://www.ajaxfilebrowser.com/

0 голосов
/ 23 ноября 2010

Похоже, у вас есть требование «Предотвратить исключение» и способ, которым, по вашему мнению, вы должны реализовать эту цель, «Проверить размер файла на стороне клиента».

Вы можете только 100% проверьте размер файла на стороне клиента с помощью технологии на стороне клиента, такой как Flash или Silverlight.Это предотвращает исключение, но вынуждает вас привязать себя к определенной технологии на стороне клиента.

Вы МОЖЕТЕ предотвратить исключение, но оно возникает после загрузки файла (по причинам, указанным вами ранее).В этой статье приведен пример кода: http://aspnetresources.com/articles/dark_side_of_file_uploads

Аналогичные функции предоставляются из коробки в компоненте загрузки файлов, например NeatUpload (с открытым исходным кодом, LGPL): http://www.brettle.com/NeatUpload-1.3/dotnet/docs/Manual.html ->посмотрите на раздел 4.5.

0 голосов
/ 23 ноября 2010

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

.

проверить http://www.swfupload.org и демонстрацию кухонной раковины на http://demo.swfupload.org/v220/featuresdemo/index.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...