实现 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 必要!!!

相关推荐
PYB317 小时前
【Web·JS·基础】函数的使用和展运算符...objs
前端·javascript
默_笙18 小时前
🚥 给 RAG 装一台心电监护仪:LangSmith 全链路观测(上)
前端·javascript
变与不变80620 小时前
js同步和异步难点重点详解
开发语言·javascript·ecmascript
Dovis(誓平步青云)20 小时前
多个链接不等于多份证据,新闻核验看板怎样合并来源
java·服务器·前端·javascript·人工智能·pdf·电脑
Dovis(誓平步青云)21 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
可乐鸡翅yeah_1 天前
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样
开发语言·javascript·ios·音视频·safari·m3u8·m3u8在线播放
ss2731 天前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
福兮说1 天前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
小的时候可菜了1 天前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
可乐鸡翅yeah_1 天前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线