Как обработать на OutputStream восстановленный из API загрузки перед возвратом клиенту - PullRequest
0 голосов
/ 31 августа 2018

После того, как я позвонил API (скажем, облачный диск)

InputStream downloadFiles(FileIDListPojo var1, String var2, String var3),

Я хочу сделать еще несколько действий, прежде чем написать

inputStream в servletOutputStream и возврат к клиенту.

Обычно я отправляю несколько запросов, объединяю их в один ответ и возвращаю клиенту. Вы можете удивиться, почему я не отправлял запросы вместе, потому что я хочу сначала поместить каждый поток ответов в folder (or zip), а затем поместить папки в один возвращенный ZipOutputStream.

То, что я сейчас сделал, это зациклил процедуры ниже для всех запросов.

  1. подготовить темп

    ByteArrayOutputStream tempOs = new ByteArrayOutputStream();

  2. добавить папку zip в temp

    ZipOutputStream zipStream = new ZipOutputStream(tempOs);
    zipStream.putNextEntry(new ZipEntry("folder name.zip"));

  3. получить inputStream с облачного диска и записать его в tempOs

    input = cloudDriveFileClient.downloadFiles(fileIDListPojo, sessionToken, encoding); IOUtils.copy(input, tempOs);

  4. запись темпов в поток ответов

    response.getOutputStream().write(tempOs.toByteArray());

К сожалению, я не могу получить правильный zip-файл, похоже, что файлы не помещаются в папку, а записываются в одну ... Поэтому я хочу спросить, можете ли вы взглянуть и дать совет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...