Я пытаюсь загрузить zip-архив из API с помощью приложения reactjs
. Он загружается, но затем открывается с ошибкой Неожиданный конец архива . Загрузка архива через Talend API Tester
работает корректно. Вот код для получения архива и загрузки:
Сервис
public getCsvArchive(): Promise<any> {
return new Promise((result, error) => {
axios.post(config.prepareRestUrl('/api/export'), {
responseType: 'arraybuffer', // <-- also tried to use 'blob' response type
headers: {
'Content-Type': 'application/zip; charset=utf-8'
}
})
.then((response) => {
result(response.data);
}, (err) => {
error(err);
});
});
}
Компонент
async handleDownload() {
return await Service.getCsvArchive().then(result => {
const url = window.URL.createObjectURL(new Blob([result], { type: 'application/zip' }));
const a = document.createElement('a');
document.body.appendChild(a);
a.setAttribute('style', 'display: none');
a.href = url;
a.download = "export.zip";
a.click();
window.URL.revokeObjectURL(url);
a.remove();
});
}
Здесь снимок экрана: заголовки запроса и ответа: и полезная нагрузка запроса:
Также при использовании API-тестера размер архива составляет 8 КБ, но при загрузке из приложения он имеет размер 15 КБ.
ОБНОВЛЕНИЕ
Запрос не работает только при использовании метода POST.