Angular 2+ как разархивировать файл из ответа - PullRequest
0 голосов
/ 07 ноября 2019

Привет всем, у меня есть сервер Spring на стороне сервера, и на моем клиенте Angular у меня есть метод, который запрашивает некоторые изображения, и ответ включает в себя почтовый индекс с этими изображениями, на моей стороне клиента я хочу распаковать ответи создайте blob-url из каждой фотографии, чтобы показать ее в разделе изображений на веб-сайте, если с сервера отправляется только одна фотография (не в формате zip), я могу это сделать, но если отправлено более одного изображения,сервер вернет почтовый индекс, и я не могу понять, как распаковать его, чтобы получить доступ к изображениям внутри ..., мой resposneType в настоящее время является 'arrayBuffer', но я могу изменить его на blob или file или мы, любая помощь, пожалуйста?

Метод GET на стороне сервера:

@GetMapping(value = "/downloadTest", produces = "application/zip")
    public void downloadTest(HttpServletResponse response) {
        ZipOutputStream zipOutputStream = null;
        try {
            zipOutputStream = new ZipOutputStream(response.getOutputStream());

            File directory = new File(baseFileDestination);
            File[] subDirectories = directory.listFiles();
            for (int i = 0; i < subDirectories.length; i++) {
                File[] files = subDirectories[i].listFiles();
                for (File f:files) {
                    FileSystemResource resource = new FileSystemResource(f.getPath());
                    ZipEntry zipEntry = new ZipEntry(resource.getFilename());
                    zipEntry.setSize(resource.contentLength());
                    if (zipOutputStream != null) {
                        zipOutputStream.putNextEntry(zipEntry);
                        StreamUtils.copy(resource.getInputStream(), zipOutputStream);
                        zipOutputStream.closeEntry();
                    }
                }
            }
            zipOutputStream.finish();
            zipOutputStream.close();
            System.out.println("6");
            response.setStatus(HttpServletResponse.SC_OK);
            response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + "hello" + "\"");
        } catch (IOException e) {
                        e.printStackTrace();
        }
    }

Запрос GET на стороне клиента:

this.http.get('http://localhost:8080/loginService/downloadTest', { responseType: 'arraybuffer' }).subscribe(
      res => {

});
...