У меня есть следующий контроллер пружин для загрузки файла, который работает нормально, когда я напрямую вызываю конечную точку, и я получаю файл CSV с зашифрованным содержимым .
@GetMapping(value = "registered-cards")
public ResponseEntity<byte[]> generateRegisteredCards(@RequestParam("from") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime from,
@RequestParam("to") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime to) throws Exception {
byte[] bytes = cfsbReportingService.generateRegisteredCardsReport(from, to);
HttpHeaders headers = new HttpHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + "report-" + LocalDateTime.now() + ".csv");
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
У меня есть следующиекод на моем JavaScript для вызова конечной точки и загрузки файла.Дело в том, что я могу загрузить файл, но не могу расшифровать его, тогда как при загрузке файла путем прямого вызова конечной точки он расшифровывается.
public getRegisteredCards(fromDate, toDate) : void {
const fromEst = fromDate.startOf('day').tz('America/New_York').format();
const endEst = toDate.endOf('day').tz('America/New_York').format();
this.reportingService.generateNewRegisteredCardsFile(fromEst, endEst).then(
(response:any) => {
const blob = new Blob([response.data], {type: 'application/octet-stream'});
const hiddenElement = document.createElement('a');
hiddenElement.href = window.URL.createObjectURL(blob);
hiddenElement.target = '_blank';
hiddenElement.download = 'file.csv';
hiddenElement.click();
}
).catch(this.handleError(''));
Вызов на сервер:
public generateNewRegisteredCardsFile(from: String, to: String) {
const url = `${this.api()}/reporting/v1/registered-cards?from=${from}&to=${to}` ;
const headers = new Headers({'Content-Type': 'application/octet-stream', 'Accept': 'application/octet-stream', 'Access-Control-Allow-Origin': '*'});
return this.$http.get(url, headers);
} }
Что я здесь не так делаю?Я посмотрел десятки примеров, и вот как файл загружается.
Спасибо!