Файл Excel поврежден при загрузке из бэкенда Django через Axios в Vue.js
Я пытаюсь загрузить файл Excel из бэкенда Django во фронтенд, используя Axios и FileSaver.js (также пробовал без этого). Файл успешно генерируется на бэкенде, но когда я загружаю его через фронтенд, файл становится поврежденным и не может быть открыт Excel.
Я использую pandas для создания файла Excel в памяти, а затем возвращаю его в качестве ответа.
Код бэкенда -
buffer = BytesIO()
with pd.ExcelWriter(buffer, engine='xlsxwriter') as writer:
for item in data_list:
attributes = item['attributes']
attributes['ID'] = item['id']
df = pd.DataFrame([attributes])
sheet_name = f"Sheet_{item['id']}"
df.to_excel(writer, sheet_name=sheet_name, index=False)
buffer.seek(0)
response = HttpResponse(buffer, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename="data_export.xlsx"'
return response
Код фронтенда -
async function downloadFile() {
try {
const response = await axios.get('/api/export-excel', {
responseType: 'blob',
});
saveAs(new Blob([response.data]), 'data_export.xlsx');
} catch (error) {
console.error('Error downloading file:', error);
}
}
Я знаю, что здесь уже задавались подобные вопросы, и я уже пробовал эти вещи (использование arraybuffer, тип - ms-excel, также пробовал использовать openpyxl), но, похоже, ничего не получилось.
Что может вызвать повреждение файла при загрузке через фронтенд? Как убедиться, что файл загружается правильно и открывается в Excel без повреждений?
Любой совет или предложение будут высоко оценены!