我的页面上有一个下载链接,但它不起作用并出现错误。 这是我的代码。
请求映射:
@RequestMapping(value="/{id}/download", method=RequestMethod.GET)
public ResponseEntity<Resource> downloadFile(@PathVariable Integer id) {
// Load file from database
MsFile file = null;
MsAnnouncement ano = null;
try {
ano = anRepo.findById(id).get();
file = fileService.getFile(ano.getFileId().getId());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(file.getFileType()))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getAttachedFileName() + "\"")
.body(new ByteArrayResource(file.getAttachedFile()));
}
html:
<a class=" mx-1 btn btn-secondary" th:href="@{/admin/announcement/{id}/download/(id=${announcement.id})}"
>Download</a>
当我单击按钮时,我只需要下载一次文件即可。但是,当我尝试使用此代码时,无法下载文件,并且在返回ResponseEntity.ok()时出错:
以下错误:
AnnouncementController.downloadFile(AnnouncementController.java:130) ~[classes/:na]
在java:130上:
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(file.getFileType()))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getAttachedFileName() + "\"")
.body(new ByteArrayResource(file.getAttachedFile()));
}