java #spring #thymeleaf
#java #весна #thymeleaf
Вопрос:
Я хочу отправить полный трек для просмотра и отображения, например http://localhost:8080/fileaName . Затем я нажимаю эту ссылку и сохраняю файл на своем диске.
String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
.path("src/main/resources/temp/")
.path(fileName)
.toUriString();
model.addAttribute("fileDownloadUri", fileDownloadUri);
Теперь я не вижу ссылку на странице
<span th:href="${fileDownloadUri}"></span>
Ответ №1:
Не уверен, как выглядит конечная точка вашего контроллера. Но я бы использовал приведенный ниже контроллер и представление, чтобы показать прямую ссылку на скачивание файла.
Контроллер:
@GetMapping("/downloadFile/{fileId}")
public ResponseEntity<Resource> downloadFile(@PathVariable String fileId) {
// Load file from your source
AppUserDocument appUserDocument = someDocumentStorageService.getFile(fileId);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(appUserDocument.getFileType()))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename="" appUserDocument.getFileName() """)
.body(new ByteArrayResource(appUserDocument.getData()));
}
А затем в представлении thymeleaf я бы предоставил ссылку для скачивания, как показано ниже:
<td> <a class="btn btn-sm btn-primary" th:href="@{/downloadFile/{id}(id=${myfile.id})}">Download</a></td>
Вы можете сослаться на мой репозиторий github выше здесь:
https://github.com/ajkr195/springbootfileupldnldRESTDB
Или предоставьте свой полный метод контроллера, отвечающий за это. Так что люди SO могут вам помочь.