实现 Browser 客户端下载 XML 文件功能

后端

  1. 使用 io.BytesIO 方法 创建一个字节缓冲区在不需要磁盘文件的情况下进行文件操作
  2. 打包为 zip 压缩包(上图代码)
  3. in_memory_zip.seek(0) 数据写入ZIP后文件指针会停留在缓冲区的末尾将文件指针重置回开头
  4. make_response() 方法用于创建HTTP响应的函数
  5. .getvalue() 方法返回内存中ZIP文件的完整内容返回给客户端
  6. Content-Disposition : 告诉浏览器或客户端这个响应应该被当作一个附件来处理
  7. Content-Type : 告诉浏览器或客户端响应体包含的是一个ZIP格式的文件

前端

接口部分

responseType: 'blob' 作用 : 服务器响应的内容将被自动处理为一个BLOB对象,随后可以被用来创建下载链接,允许用户下载从服务器接收的二进制数据 重点

代码

打印 blob 为:

URL.createObjectURL() 方法返回一个 DOMString,它是一个临时的、唯一的 URL,指向你提供的 BLOB 或 File 对象

使用 JS 的 document.createElement('a') 方法创建一个临时的元素用来从客户端触发下载

a.href = url 它的 href 属性就是刚才创建的临时 URL

URL.revokeObjectURL(url) 清理通过 URL.createObjectURL() 方法创建的 URL 必要!!!

相关推荐
小厨勺子3 小时前
我用AIUI给Rokid眼镜做了个随身换算智能体
javascript
夕水4 小时前
我用trae重构了ew-color-picker,一个插件化架构的现代颜色选择器
前端·javascript·开源
FYKJ_20106 小时前
springboot同人周边订单管理系统48955-计算机毕业设计、课程设计
java·javascript·vue.js·spring boot·django·php·课程设计
总要学点什么6 小时前
第106篇:三维特效-流动线效果——让一颗光点沿整条线一路滚到头
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
2分钟速写快排13 小时前
孔乙己的茴字有多少种写法?|AI 对话实时通信的三种实现
前端·javascript·github
用户00447295382520 小时前
练歌镜:让眼镜听懂“循环这一句”
javascript
yuyuxun11 天前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
总要学点什么1 天前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Agent世界1 天前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
总要学点什么1 天前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium