2010-11-23 3 views
3

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

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

У меня нет интереса к увеличению длины maxRequestLength.

ответ

1

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

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

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

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

Найдено в this webpage и also this one

0

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

чек из http://www.swfupload.org и кухонной мойки демо на http://demo.swfupload.org/v220/featuresdemo/index.php

+0

Я на самом деле видел пример делать это в этой теме: http://forums.asp.net/p/1096161/ 1655494.aspx, но я не слишком увлекаюсь идеей, что эта проверка выполняется на ВСЕХ запросах, проходящих через приложение. – nillls 2010-11-23 14:04:45

0

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

Вы можете только 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

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

второго загляните в качестве АЯКС реализации, доказать, что это возможно: http://www.ajaxfilebrowser.com/

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