Estou implementando um aplicativo da web Grails / Groovy, quero limitar o tamanho de upload do arquivo do usuário, não quero que alguém envie um arquivo de 10 GB para o meu servidor. O que eu descobri foi que a maioria das abordagens para calcular o tamanho é feita depois que o arquivo já está carregado. E se alguém colocar 10 perfis e carregar 10 arquivos de até 10 GB? Isso pode esgotar o servidor e ocupar muito espaço no disco do servidor. Então estou tentando evitar isso.
Eu descobri que o Apache Tomcat permite a configuração a seguir, na abordagem codificada ou Anotação. Não tenho certeza se o tamanho máximo do arquivo é calculado durante o processo de upload ou após o upload do arquivo para um local temporário. A documentação indica o seguinte:
The @MultipartConfig annotation supports the following optional
attributes:
location: An absolute path to a directory on the file system. The
location attribute does not support a path relative to the application
context. This location is used to store files temporarily while the
parts are processed or when the size of the file exceeds the specified
fileSizeThreshold setting. The default location is "".
fileSizeThreshold: The file size in bytes after which the file will be
temporarily stored on disk. The default size is 0 bytes.
MaxFileSize: The maximum size allowed for uploaded files, in bytes. If
the size of any uploaded file is greater than this size, the web
container will throw an exception (IllegalStateException). The default
size is unlimited.
maxRequestSize: The maximum size allowed for a multipart/form-data
request, in bytes. The web container will throw an exception if the
overall size of all uploaded files exceeds this threshold. The default
size is unlimited.
abordagem de anotação:
@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024,
maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
e aqui está o valor codificado:
<multipart-config>
<!– 50MB max –>
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
Aprecio se alguém puder esclarecer se o MaxFileSize é calculado durante o processo de upload.