Я пытаюсь загрузить какой-нибудь файл Excel из API, который я создал в моем приложении реагировать на машинописный текст, используя метод fetch из tslib.Вот код загрузки:
export const getBlobCors = url =>
tryAjax<Blob>(
() =>
fetch(url, {
credentials: 'omit',
headers: new Headers({
...getAuthHeader(),
responseType: 'blob'
})
}),
async response => {
if (response.ok) {
const blob = await response.blob()
return blob
} else {
throw new Error(DefaultErrorMsg)
}
}
)
Этот метод вызывается здесь:
async function downloadReport(urlData: ReportUrlData) {
const url = reportUrl(urlData)
const blob = await getBlobCors(url)
const blobUrl = window.URL.createObjectURL(blob)
const a = document.createElement('a')
a.style.display = 'none'
a.href = blobUrl
a.download = 'Report.xlsx'
document.body.appendChild(a)
a.click()
setTimeout(() => {
document.body.removeChild(a)
window.URL.revokeObjectURL(blobUrl)
})
}
Как вы можете видеть, имя файла жестко закодировано a.download = 'Report.xlsx'
, но мне нужноназначить его на имя файла, который вернул API.Имя файла существует в заголовке ответа , но когда я пытаюсь прочитать его, getBlobCors
метод ответа Я получаю null
назад, на самом деле response.headers
пусто ввсе.
async response => {
if (response.ok) {
const fileName = response.headers.get('Content-Disposition') // null
const headers = response.headers // Headers {}
const blob = await response.blob()
return blob
}
Кто-нибудь знает, как прочитать имя файла из ответа или любой другой, который я могу получить?