欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Axios 下载后端返回的文件

Axios 下载后端返回的文件

2025/5/15 0:34:21 来源:https://blog.csdn.net/qq_42889888/article/details/143233037  浏览:    关键词:Axios 下载后端返回的文件

一般来说后端返回的都是FileResponse,在前端设置返回值的类型为 blob,但是我们还想给一些其他的数据字段,这时候就不能用 blob类型了,所以这里还是设置返回值为json格式,以Django+Axios 为例,请求后文件就会自动下载了

# Django 代码import io, base64@csrf_exempt
def export_task(request):export_file = '\n'.join([123,456,789])buffer = io.BytesIO()with zipfile.ZipFile(buffer, 'w') as zipf:zipf.writestr("1.txt", export_file)buffer.seek(0)data = {"name": "1.zip", "file": str(base64.b64encode(buffer.getvalue()).decode('utf-8'))}return JsonResponse({"code": 0, "status": "success", "msg": "导出成功", "data": data})
// Axios 代码部分export const task_export = async () => {return await http.post('http:127.0.0.1:8080/api/task/task_export/')
}const base64ToBlob = (base64:any) => {const byteCharacters = atob(base64);const byteNumbers = new Array(byteCharacters.length);for (let i = 0; i < byteCharacters.length; i++) byteNumbers[i] = byteCharacters.charCodeAt(i);const byteArray = new Uint8Array(byteNumbers);return new Blob([byteArray], { type: 'application/octet-stream' });
}
const downloadFile = (base64Data:any,filename:string) => {const blob = base64ToBlob(base64Data);const url = window.URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = filename;a.style.display = 'none';document.body.appendChild(a);a.click();window.URL.revokeObjectURL(url);document.body.removeChild(a);
}
const task_export_fn = () => {task_export().then((res:any) => {if (res.code == -1) console.log(res.msg)else {downloadFile(res.data.file, res.data.name)console.log("导出成功")}})
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词