2014-02-05 2 views
4

Я понял, что Apache Tomcat допускает следующую конфигурацию: в жестко закодированном или аннотационном подходе. Я не уверен, что максимальный размер файла вычисляется во время процесса загрузки или после того, как файл загружен в временное место. Документация указывает на следующее:как обрабатывать MaxUploadSizeExceededException: максимальная загрузка в сервлет

@MultipartConfig аннотацию поддерживает следующие атрибуты:

местоположение: абсолютный путь к каталогу файловой системы. Атрибут местоположения не поддерживает путь относительно контекста приложения . Это место используется для временного хранения файлов во время обработки частей или когда размер файла превышает заданный параметр 0SfileSizeThreshold. По умолчанию используется значение «».

fileSizeThreshold: размер файла в байтах, после которого файл будет временно сохранен на диске. Размер по умолчанию - 0 байтов.

MaxFileSize: максимальный размер, разрешенный для загружаемых файлов, в байтах. Если размер любого загруженного файла больше этого размера, контейнер будет вызывать исключение (исключение IllegalStateException). По умолчанию размер не ограничен.

maxRequestSize: Максимальный размер, разрешенный для данных multipart/form-data , в байтах. Веб-контейнер генерирует исключение, если общий размер всех загруженных файлов превышает этот порог. По умолчанию размер не ограничен.

аннотацию подход:

@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024, 
maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5) 

Я признателен, если кто-нибудь может уточнить, если MaxFileSize вычисляется во время процесса загрузки и как обработать это исключение в сервлет.

+0

Вы видели это [Учебник] (http://docs.oracle.com/javaee/6/tutorial/doc/gmhal .html) или [этот] (http://docs.oracle.com/javaee/7/tutorial/doc/servlets011.htm)? –

+0

Да, у меня уже есть эта статья, но не упоминается, когда Maxfilesize вычислялся во время процесса загрузки или раньше, и это будет помощь, если вы скажете мне, как обрабатывать MaxUploadSizeExceededException в сервлет. – nitin

ответ

0

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

Это происходит, когда вы пытаетесь получить детали запроса, вызвав HttpServletRequest.getParts() или HttpServletRequest.getPart(). Таким образом, самый простой способ это просто поместить это в try-catch блок, как это:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

    Parts parts = null 
    try { 
     parts = request.getParts(); 
    } catch (IllegalStateException e) { 
     // File or request is too big! 
     // Here you can send back an error message to the client, 
     // I just send back an HTTP 400 (Bad Request) error page. 
     response.sendError(HttpServletResponse.SC_BAD_REQUEST); 
     return; 
    } 

    // Process parts... 
} 
+0

Есть ли способ переназначить максимально допустимое значение? – NSP

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

  • Нет связанных вопросов^_^