Это невозможно при использовании стандартного Servlet или API Commons FileUpload. По сути, чтобы иметь возможность немедленно прервать соединение, вы должны физически взять базовый сокет и закрыть его. Однако этот сокет контролируется веб-сервером. См. Также этот связанный вопрос: Как явно прекратить http-соединение с сервера без заголовка ответа .
Однако небольшие тесты подтвердили, что Commons FileUpload не буферизует весь файл в памяти, когда его размер превышает ограничение. Он будет читать входной поток, но просто проигнорирует и выбросит прочитанные байты (также те, которые уже прочитаны). Таким образом, эффективность памяти не обязательно проблема здесь.
Чтобы исправить реальную проблему, вы, в основном, хотели бы проверить размер файла на стороне клиента, а не на стороне сервера. Это возможно с помощью Java-апплета или приложения Flash. Например, соответственно JumpLoader и SWFUpload .