如何解决React Axios - 从 Django 后端下载 excel 文件
我正在尝试下载由 Django 后端生成的 excel 文件:
class GenerateExcel(APIView):
def get(self,request):
filename = 'File.xlsx'
wb = Workbook()
ws = wb.active
ws.title = "Workbook"
response = HttpResponse(save_virtual_workbook(wb),content_type='application/ms-excel')
response["Content-disposition"] = 'attachment; filename="' + filename + '"'
return response
如果我通过邮递员发送请求,我会收到成功的响应,我可以通过选项“保存响应”->“保存到文件”下载文件,并且它工作正常。
如果我尝试使用 axios 在我的前端下载它,我可以下载 excel 文件,但它的大小与邮递员提供的文件不同,并且无法打开 excel 文件。我收到文件已损坏错误。 我正在使用 redux,因此此代码位于操作文件中:
export const getYhrtaskgrpExcel = (fromDate,toDate) => async dispatch => {
const url = `http://127.0.0.1/excel-report/`;
try {
dispatch({
type: GET_EXCEL_REQUEST
});
const res = await axios.get(url,{responseType: 'arraybuffer'})
dispatch({
type: GET_EXCEL_SUCCESS,payload: res.data
});
console.log('this is data: ',res.data);
var FileSaver = require('file-saver');
var blob = new Blob([res.data],{type:'application/ms-excel'});
FileSaver.saveAs(blob,"excel.xlsx");
} catch (error) {
dispatch({
type: GET_EXCEL_FAIL,payload: error.data
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。