Как обработать составной zip-файл и объект json с помощью фреймворка sparkjava

Я пытаюсь обработать как файл multipart zip, так и объект json из запроса, используя SparkJava, но запрос становится пустым, как только мы используем его для анализа файла zip и того же нельзя использовать для разбора объекта json. Есть ли способ сделать это, используя SparkJava.

Я обрабатываю zip-файл следующим образом

post("/agent/blueprint/create", (request, response) -> {
    String responseObject = null;
    if (request.raw().getAttribute("org.eclipse.jetty.multipartConfig") == null) {
        MultipartConfigElement multipartConfigElement = new MultipartConfigElement(System.getProperty("java.io.tmpdir"));
        request.raw().setAttribute("org.eclipse.jetty.multipartConfig", multipartConfigElement);}
        Part file = request.raw().getPart("fileStream");
        if (file.getContentType().startsWith("application/octet-stream")) {
            Part uploadedFile = request.raw().getPart("fileStream");
            InputStream inputStream = uploadedFile.getInputStream();
            ZipInputStream zipInputStream = new ZipInputStream(inputStream);
            ZipEntry entry = null;
            while ((entry = zipInputStream.getNextEntry()) != null) {

            ...
            }
        }
    }
});

Запрос состоит из двух частей: одна представляет собой zip-файл, а другая — объект json, код которого выше кода обрабатывает вложение, затем, когда я пытаюсь обработать объект json с помощью «request.body()», запрос кажется пустым.


person arshad halageri    schedule 10.05.2016    source источник
comment
Здравствуйте и добро пожаловать в Переполнение стека. Пожалуйста, найдите время для тура и посетите справочный центр.   -  person Sampada    schedule 10.05.2016
comment
Не могли бы вы опубликовать фрагмент кода для лучшего понимания?   -  person Laercio Metzner    schedule 10.05.2016
comment
@Laercio, я добавил фрагмент кода   -  person arshad halageri    schedule 10.05.2016
comment
Проверьте, какую строку вы получаете при вызове request.body(), прежде чем начать обработку zip-файла.   -  person Laercio Metzner    schedule 10.05.2016
comment
Да, я это сделал. В этом случае обработка zip выдает ошибку, похоже, что любой из них может быть обработан, а не оба   -  person arshad halageri    schedule 10.05.2016
comment
Но в этом случае вы смогли получить json?   -  person Laercio Metzner    schedule 10.05.2016
comment
Еще одно предположение, возможно, проблема заключается в том, что только часть запросов, содержащих заархивированный файл, имеет имя (fileStream). Попробуйте дать имя той части, которая также содержит json.   -  person Laercio Metzner    schedule 11.05.2016
comment
Я смог получить json при первом вызове, имя части, которая содержит json, - «данные», но после получения json, если я попытаюсь получить zip, он выдает ошибку   -  person arshad halageri    schedule 11.05.2016


Ответы (1)


Я понял, этого можно добиться, используя Collection для извлечения объекта json и прокручивая его.

Collection<Part> parts = request.raw().getParts();
for (Part part : parts) {

и для использования части zip-файла

Part file = request.raw().getPart("fileStream");
person arshad halageri    schedule 12.05.2016