如何将文件的完整路径添加到视图中?
How to add the full path with file to the view?
我想发送完整曲目以查看和显示,如 http://localhost:8080/fileaName。然后我按下 link 并将文件保存在我的磁盘上。
String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
.path("src/main/resources/temp/")
.path(fileName)
.toUriString();
model.addAttribute("fileDownloadUri", fileDownloadUri);
现在我在页面上看不到 link
<span th:href="${fileDownloadUri}"></span>
不确定控制器的端点是什么样子。但我会使用下面的控制器和视图来显示直接下载 link 到文件。
控制器:
@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 视图中,我会提供下载 link,如下所示:
<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 人员可以帮助您。
我想发送完整曲目以查看和显示,如 http://localhost:8080/fileaName。然后我按下 link 并将文件保存在我的磁盘上。
String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
.path("src/main/resources/temp/")
.path(fileName)
.toUriString();
model.addAttribute("fileDownloadUri", fileDownloadUri);
现在我在页面上看不到 link
<span th:href="${fileDownloadUri}"></span>
不确定控制器的端点是什么样子。但我会使用下面的控制器和视图来显示直接下载 link 到文件。
控制器:
@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 视图中,我会提供下载 link,如下所示:
<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 人员可以帮助您。