Создайте ссылку для загрузки файла, используя Spring Boot и Thymeleaf - PullRequest
0 голосов
/ 25 марта 2019

У меня есть ссылка для скачивания на моей странице, но она не работает и выдает ошибку. Вот мой код.

отображение запроса:

@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()));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...