Как отфильтровать картинки за присутствием в repository?
У меня есть сайт-блог и реализована загрузка фотографий в пост. Когда я загружаю фотографию мне нужно видеть список загруженых фото для конкретного(несозданного) поста. Смог реализовать только вывод всех фотографий из всех постов.
Контроллер:
@GetMapping("/blog/add")
public String blogAdd(Model model) {
model.addAttribute("files", storageService.loadAll().map(
path -> MvcUriComponentsBuilder.fromMethodName(AdminFileUploadController.class,
"serveFile", path.getFileName().toString()).build().toUri().toString())
.collect(Collectors.toList()));
return "blog-add";
}
Контроллер загрузки фото:
@GetMapping("/files/{filename:.+}")
@ResponseBody
public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
Resource file = storageService.loadAsResource(filename);
return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=\"" + file.getFilename() + "\"").body(file);
}
@PostMapping("/add/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
storageService.store(file);
imagesList.add(file.getOriginalFilename());
redirectAttributes.addFlashAttribute("message",
"You successfully uploaded " + file.getOriginalFilename() + "!");
return "redirect:/admin/blog/add";
}
Сервис:
import java.io.IOException;
import java.nio.file.Path;
import java.util.stream.Stream;
public interface StorageService {
void init();
void store(MultipartFile file);
Stream<Path> loadAll();
Path load(String filename);
Resource loadAsResource(String filename);
void deleteAll();
void deleteFile(String fileLink) throws IOException;
}
Репозиторий постов:
package com.project.sideproject.repository;
import com.project.sideproject.models.Post;
import org.springframework.data.repository.CrudRepository;
public interface PostRepository extends CrudRepository<Post, Long> {
}
HTML:
<div>
<ul>
<li th:each="file : ${files}">
<img th:src="${file}" th:text="${file}" />
</li>
</ul>
</div>