django下载或者导出文件
测试管理平台需要增加导出用例成Excel的功能,有两种方式
一种是:Django获取数据先生成本地文件,读取本地文件后再传递给前端
还一种是:Django获取数据,生成文件流,文件流传给前端
第一种资料比较多,但是要每次下载都要在本地生成文件,太过繁琐,这边选择第二种方式
步骤:
先处理Django后端
这边使用的是openpyxl
wb = Worbook()
ws = wb.active
.....
/*
ws是个worksheet对象,我的目的是将其变成二进制数据
通过BytesIO()来处理
from io import BytesIO*/
output = BytesIO()
wb.save(output) #这句是将worksheet保存到二进制字节中去
output.seek(0) #output读取所以数据
response = FileResponse(output) #定义FileResponse,里面传字节流进去
/*
最后返回的是response文件流,我的文件名想单独字段传递给前端,咋办
通过加response的headers来处理
还有文件名中文乱码咋搞,通过escape_uri_path来处理
*/
tname = "你好哟"
tname = escape_uri_path(tname)
fileName = tname + time.strftime("%y%m%d%H%M%S") + '.xlsx'
response['name'] = fileName
response['Access-Control-Expose-Headers'] = 'name' #这个name是上一句的key
response['Content-Type'] = 'applecation/octet-stream'#这边不加Content-Disposition也可以
return response
前端需要处理两个,一个是请求参数这么设置,还一个是相应和文件名咋处理
请求参数ajax需要设置responseType: 'blob'
this.$axios({method: "post",url: "/test/export/",data: this.exportData,responseType: 'blob'}).then(function(res){
/*
其实就是通过创建a标签来处理打开href链接来下载,最后在移除a标签就行
*/let url = window.URL.createObjectURL(res.data)//res.data就是接口返回的文件对象let a = document.createElement('a')a.href = urla.download = decodeURI(res.headers.name)//res.headers.nam就可以获取自定义的名称,再解码document.body.appendChild(a)a.click()window.URL.revokeObjectURL(url)document.body.removeChild(a)})
django下载或者导出文件相关推荐
- django下载excel,使用django-excel插件
django下载Excel,使用django-excel插件 由于目前的资料多是使用pandas或xlwt库实现的.其实没有那么的麻烦,因为django有相对应的插件django-excel. 该插件 ...
- 【Django下载文件-Kml文件下载】
Django下载文件系列 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 开发应该了解的Web文件下载 第二章 Django下载文件-三种方法 第三章 Django下载文件- ...
- django下载 中文名 文件
Django下载中文名文件: the_file_name = "中文名.abc" response = HttpResponse(stream) response['Content ...
- Python压缩解压zip,Django下载zip文件
Python压缩解压zip 压缩 import zipfile def convert_zip(zip_path, save_path):'''# zip_path 要压缩文件的路径# save_pa ...
- python django下载_简单了解django文件下载方式
这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 推荐使用FileResponse,从源码中可以 ...
- 3、Django下载与简介
第1节:MVC与MTV模型 1.1 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一 ...
- django 下载安装xadmin(django3.x + python3.6+xadmin2.x)
文章目录 前言 一.xadmin是什么? 二.使用步骤 1.下载资料 2.在settings里配置extra_apps, 设置为可搜索的路径 3.注册到app,注意'crispy_forms'中是下划 ...
- Django下载文件中文乱码 FileResponse 浏览器正确识别文件名和文件大小的简单方法
起因 工作需要维护一个工单系统,下载文件时如果文件名有中文会导致乱码,并且下载时不显示文件的完整大小,没有进度条 修改 原先接口是这样写的 # view入口 class DownFile(BaseVi ...
- python django下载 功能如何实现_Python中django文件传输下载功能的实现
Python中django文件传输下载功能的实现,基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django ...
- vue下载、导出文件返回blob时后台抛出异常时弹出提示
主要是利用response.type来判断返回数据的格式,直接上代码 api.exportXls(this.dataForm).then(response => {const fileReade ...
最新文章
- JDBC 学习(一)
- hive 添加UDF(user define function) hive的insert语句
- 【开卷故意】记录一次高并发下的死锁解决思考过程
- java并发编程之美-阅读记录7
- 51 nod 1522 上下序列——序列dp
- jenkins自动部署--定时轮询svn代码更新并自动发布至测试环境
- CentOs6.5 更新python2.7,以及tab自动补全
- cocos2dx在不同安卓机型下scrollview裁剪失败
- 关于用户自定义控件与引用该控件的页面之间的javascript脚本冲突
- 使用yum命令时Error: Cannot find a valid baseurl for repo: base
- 优先队列 priority_queue 用法 (struct,非cmp)
- 迅捷音频转换器怎么使用?
- java算法训练 调和数列问题
- ttl转rs232发送十六进制_TTL和RS232之间的详细对比
- 苹果手机微信声音小怎么调大声_苹果手机xr对方听不到我说话,通话质量差的问题...
- 蜂鸟数据Trochil:论述制定策略的两种主要方法:市场假设和瑞士法郎案例研究-构建更好的策略1
- 好用的远程登录服务器工具
- 高德地图自定义点标记大小_高德地图 自定义点标记 图标大小
- nova7可以升级成鸿蒙20系统,华为nova7升级到EMUI11,8大功能提升,带来更新体验...
- Cannot get property '......' on extra properties extension as it does not exist
热门文章
- 启动失败java.lang_关于jeesite启动失败的问题java.lang.UnsupportedClassVersionError
- nest 设置密码_如何设置Nest Cam
- c语言 error c2562,C语言之关键字(二) void,const
- 最新版本的000-919题库
- 三菱Q系列PLC QJ71C24-R2模块的串口232通信
- 常用的网络传输协议:UDP和TCP
- 【FPGA入门一】一个简单的LED流水灯
- 判断是否为回文字符串
- 影子系统、沙盒、虚拟机的区别
- 串口(Uart)的基础知识