Как вы читаете данные POST из сервлета в ZipStream? - PullRequest
1 голос
/ 10 октября 2011

Ситуация такова, что ZIP-файл был размещен на сервере Tomcat, и поскольку с ним не связано имя параметра, мы идем прямо к потоку запроса.

  ServletInputStream sis = request.getInputStream()
  ZipInputStream zis = new ZipInputStream(sis)
  ZipEntry zEntry = zis.getNextEntry()
  while (zEntry != null) {
    // do something with zEntry
    zEntry = zis.getNextEntry()
  }

Неимоверно просто,но это не работаетОн никогда не входит в цикл while, потому что первый zEntry имеет значение null.(ZIP-файл действителен, кстати)

Есть идеи?Спасибо

РЕДАКТИРОВАТЬ: Тип является multipart / form-data ("multipart / form-data; border = --------------------- 8ce556d90e9deb6")

1 Ответ

0 голосов
/ 10 октября 2011

РЕДАКТИРОВАТЬ: Тип является multipart / form-data ("multipart / form-data; border = --------------------- 8ce556d90e9deb6")

Вам нужно использовать синтаксический анализатор multipart/form-data для извлечения загруженного файла.Вы не должны кормить его сырым до ZipInputStream.Однако меня удивляет, что не возникло исключение, что он не в формате ZIP.

getParameter() и консорты предназначены только для запросов application/www-form-urlencoded.Все они будут возвращать null на multipart/form-data запросах.Вам нужно использовать метод getParts().Или, если вы все еще используете Servlet 2.5 или старше, вам нужно проанализировать тело с помощью Apache Commons Fileupload .

В любом случае, вы должны иметь возможность перебирать multipart/form-data элементов и получать загруженный файл (ы) в виде InputStream, который вы, в свою очередь, читаете, используя ZipInputStream.

См.также:

...