Сохранение уже созданного файла PDF или CSV с помощью Angular (без экспорта) - PullRequest
0 голосов
/ 25 октября 2018

У меня есть две конечные точки

POST `reports/pdf`
{
payload
}

И:

POST `reports/csv`
{
payload
}

, которые возвращают временные файлы как file:///C:/Users/UserFolder/AppData/Local/Temp/csv6677594787854925068.csv и file:///C:/Users/UserFolder/AppData/Local/Temp/pdf6677594753424925068.pdf

Я создал службы с методамикак этот, чтобы получить этот файл:

exportReport(summaryCustomerReport: SummaryCustomerReport): Observable<Object> {
const exportUrl = `${this.reportsUrl}/pdf`;


return this.http.post(exportUrl, summaryCustomerReport);
}
private get reportsUrl() {
return `${environment.backendUrl}/reports`;
}

И затем я попытался использовать этот сервис:

downloadPdf() {
this.hoursWorkedForCustomersService.exportReport(this.summaryCustomerReport, ExportFileFormat[ExportFileFormat.PDF]).subscribe(
  result => {
    saveAs(result, 'new.pdf');
   },
  error => { console.error(error) },
  () => {}
);}

Но у меня есть ошибка под названием

Access to XMLHttpRequest at 'file:///C:/Users/UserFolder/AppData/Local/Temp/csv6677594787854925068.csv' from origin 'http://localhost:4200' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

А также:

ERROR DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///C:/Users/UserFolder/AppData/Local/Temp/csv6677594787854925068.csv'.

Я пытался использовать решение из похожих вопросов, таких как запуск Chrome с CMD, например chrome.exe --allow-file-access-from-files --disable-web-security, это не помогло.

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете сделать две вещи

  1. поместить ваш файл в корневой каталог вашего приложения, затем вы можете получить к нему доступ через http :: // localhost: 4200 / csv6677594787854925068.csv вместо файла: ///C: /Users/UserFolder/AppData/Local/Temp/csv6677594787854925068.csv

или

установить новое поле в заголовке ответа как «Access-Control-Allow-Origin: *».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...