Чтение вложений электронной почты с помощью Grooy / Grails + Javamail с ограничением размера файла - PullRequest
1 голос
/ 13 июня 2011

У меня есть веб-приложение 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 мегабайт байтовый массив расширяется, чтобы соответствовать всему файлу. Как я могу ограничить размер здесь? Более того, есть ли способ узнать, сколько байтов является вложением, прежде чем пытаться его загрузить?

1 Ответ

0 голосов
/ 13 июня 2011

Дает ли part.inputStream.available() разумное приближение?

Редактировать

Или, part.size, вероятно, дает вам закодированный размер вложения.Я видел здесь , что умножение этого значения на 0.65 должно дать вам грубое приближение к окончательному размеру вложения

...