Я разработал приложение с использованием Jhipster, у меня есть метод для загрузки файла из моего приложения. Когда я запускаю этот метод через API REST, файл успешно загружается, но если я нажимаю кнопку в моем приложении, чтобы загрузить, это не работает, и отладка все в порядке.
Их журналы одинаковы:
войти через http://localhost:9060/api/ticket-download
2019-04-12 19:20:51.971 DEBUG 940 --- [ XNIO-6 task-6] c.g.aop.logging.LoggingAspect : Enter: com.app.web.rest.TicketResource.downloadFile() with argument[s] = []
2019-04-12 19:20:51.973 DEBUG 940 --- [ XNIO-6 task-6] c.g.aop.logging.LoggingAspect : Exit: com.app.web.rest.TicketResource.downloadFile() with result = <200 OK,Byte array resource [resource loaded from byte array],{Content-Disposition=[attachment; filename=ticket.pdf], Cache-Control=[no-cache, no-store, must-revalidate], Pragma=[no-cache], Expires=[0], Content-Length=[92672], Content-Type=[application/pdf]}>
войти через приложение
2019-04-12 19:23:43.341 DEBUG 940 --- [ XNIO-6 task-7] c.g.aop.logging.LoggingAspect : Enter: com.app.web.rest.TicketResource.downloadFile() with argument[s] = []
2019-04-12 19:23:43.343 DEBUG 940 --- [ XNIO-6 task-7] c.g.aop.logging.LoggingAspect : Exit: com.app.web.rest.TicketResource.downloadFile() with result = <200 OK,Byte array resource [resource loaded from byte array],{Content-Disposition=[attachment; filename=ticket.pdf], Cache-Control=[no-cache, no-store, must-revalidate], Pragma=[no-cache], Expires=[0], Content-Length=[92672], Content-Type=[application/pdf]}>
TicketResource.java
@RestController
@RequestMapping("/api")
public class TicketResource {
@GetMapping("/ticket-download")
public ResponseEntity<Resource> downloadFile() {
File file = new File("D:/Tickets/ticket.pdf");
HttpHeaders header = new HttpHeaders();
header.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=ticket.pdf");
header.add("Cache-Control", "no-cache, no-store, must-revalidate");
header.add("Pragma", "no-cache");
header.add("Expires", "0");
Path path = Paths.get(file.getAbsolutePath());
ByteArrayResource resource;
try {
resource = new ByteArrayResource(Files.readAllBytes(path));
return ResponseEntity.ok().headers(header).contentLength(file.length())
.contentType(MediaType.parseMediaType("application/pdf")).body(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
Мне бы хотелось, чтобы при нажатии на кнопку «скачать» в моем приложении файл был загружен правильно