Почему skipPreamble() возвращает false?

Я использую http://commons.apache.org/proper/commons-fileupload/ для разбора составной формы и извлечения загруженного файла. Я следую этому руководству http://www.oreillynet.com/onjava/blog/2006/06/parsing_formdata_multiparts.html и свежую новую документацию внутри этого пакета. request.getContentLength() говорит 700K, и это код

InputStream input = request.getInputStream();
MultipartStream mStream = new MultipartStream(input, boundArray, 94096 /*random number*/, null);
boolean part = mStream.skipPreamble();

И часть всегда false. Кто-нибудь может сказать мне, почему? Благодарю вас!


person Ekaterina Ivanova iceja.net    schedule 21.03.2014    source источник


Ответы (1)


Что касается кода MultipartStream.java вы получите MalformedStreamException в discardBodyData или readBoundary.

Похоже, что discardBodyData только объявляет, что bun никогда не выдает MalformedStreamException.

readBoundary выдает MalformedStreamException ("Непредвиденные символы следуют за границей") и MalformedStreamException ("Поток неожиданно завершился").

Комментарий говорит:

* @throws MalformedStreamException if the stream ends unexpectedly or
*                                  fails to follow required syntax

Гипотеза: 94096 /случайное число/ должно быть размером буфера. 94096 недостаточно для 700K, поэтому для MultipartStream поток неожиданно обрывается.

person Nikolay    schedule 21.03.2014
comment
Нет, проблема такая же для нового MultipartStream(input,boundArray, request.getContentLength(), null); - person Ekaterina Ivanova iceja.net; 22.03.2014
comment
Не могли бы вы предоставить более подробную информацию оboundArray. Вы создаете так же, как написано в статье? Какую ценность вы получаете? - person Nikolay; 22.03.2014
comment
Привет! Спасибо за сотрудничество, но это больше не проблема. Я нашел новое руководство пользователя здесь commons.apache.org/proper/commons-fileupload /using.html и это работает. - person Ekaterina Ivanova iceja.net; 22.03.2014