братишка, если тебе еще актуально, я долго страдал не понимал почему так, в запросе axios или fetch надо указывать
{ responseType: 'blob' }
для конфига и будет тебе счастье!
Все кто столкнется, ur wellcome
например вот накидал тебе провайдер для запроса через axios
const myNameProvider = {
getDownloadDocs(idDocs: string): Promise<AxiosResponse> {
return axios.get(`${VERS_API}/path/${id}/download-documents`, { responseType: 'blob' });
},
};
соответственно в нужном месте чейнишь это дело
myNameProvider.getDownloadDocs(id)
.then((resp) => {
downloadFile(resp);
})
.catach((error) => {
// че хочешь делаешь с эррором
});
Ну а сам метод я накидал вот такой
const downloadFile = (response: AxiosResponse): void => {
const blob = new Blob([response.data], { type: response.headers['content-type'] });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = `documents_${getCurrentDate()}.zip`;
link.click();
URL.revokeObjectURL(url);
};
не забывай учитывать какой у тебя mime файла, это я замокал под .zip, на самом деле смотри на свой формат header-е и подставляй нужный