У меня есть веб-приложение Groovy / Grails, которое читает электронную почту из Gmail. Он хорошо воспринимает сообщения и вложения, но я хотел бы ограничить размер вложения, которое я получаю. В настоящее время у меня есть этот код для чтения вложений:
byte[] file = new byte[maxSizeInBytes]
BufferedInputStream bis = new BufferedInputStream(part.getInputStream())
try {
file = bis.getBytes()
} catch (Exception e) {
...
}
Проблема здесь в том, что Groovy просто расширяет байтовый массив, чтобы вместить все, что входит, поэтому, если мой maxSizeInBytes установлен на пять мегабайт (5 *1024* 1024), и я получаю вложение размером 10 мегабайт байтовый массив расширяется, чтобы соответствовать всему файлу. Как я могу ограничить размер здесь? Более того, есть ли способ узнать, сколько байтов является вложением, прежде чем пытаться его загрузить?