Привет всем, у меня есть сервер 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 => {
});