#spring-boot #spring-data-jpa #thymeleaf #multipartform-data
#весенняя загрузка #spring-data-jpa #thymeleaf #multipartform-данные
Вопрос:
у меня есть список файлов в каталоге, который связан с объектами папок в моем приложении, каждый файл привязан к уникальному классу папки и имеет ту же ссылку, что и идентификатор папки ==> folder.id = файл.не называйте файловый объект, когда я пытаюсь отобразить содержимое моей папки, он извлекает все файлы каталога, а не только тот, который связан с моей папкой, это содержимое папки отображения моей службы
@RequestMapping("/displayfolder")
public String displayfolder(Model model, String reffolder, String filename,
@RequestParam(name="page", defaultValue="0") int page,
@RequestParam(name="size", defaultValue="10") int size){
model.addAttribute("reffolder", reffolder);
model.addAttribute("filename", filename);
try{
Folder folder = folderprocess.displayfolder(reffolder);
model.addAttribute("folder", folder);
model.addAttribute("files", storageService.loadAll().map(
path -> ServletUriComponentsBuilder.fromCurrentContextPath()
.path("/Files/")
.path(path.getFileName().toString())
.toUriString())
.collect(Collectors.toList()));
}catch (Exception e) {
model.addAttribute("error", e);
return "redirect:/displayfolder?reffolder=" reffolder
"amp;error=" e.getMessage();
}
return "edit_folder";
}
Служба loadAll():
public Stream<Path> loadAll() {
try {
return Files.walk(this.rootLocation, 1)
.filter(path -> !path.equals(this.rootLocation))
.map(this.rootLocation::relativize);
}
catch (IOException e) {
throw new StorageException("Failed to read stored files", e);
}
}
Как я могу получить только файл, связанный с запрошенной папкой?
Спасибо
Комментарии:
1. Ваш вопрос неясен. Можете ли вы еще немного объяснить, что вы пробовали, а что не работает?
2. Спасибо за ответ, мое приложение управляет несколькими объектами папок, к каждому объекту папки прикреплен документ, который хранится в ОС Linux. имена файлов совпадают с идентификатором папки и вызываются в папке по URL, например: linuxserver:8081/filename, поэтому моя проблема заключается в том, как загрузить файл по имени, потому что в моем случае, когда я использую приведенный ниже код, он загружает весь файл на диск, а не только тот, который необходим
3. Вы отладили то, что
loadAll
возвращает? Работает ли вашfilter
иmap
так, как задумано?