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

相关推荐
共享家95275 小时前
搭建 AI 聊天机器人:”我的人生我做主“
前端·javascript·css·python·pycharm·html·状态模式
摘星编程7 小时前
OpenHarmony环境下React Native:自定义useTruncate文本截断
javascript·react native·react.js
Duang007_7 小时前
【LeetCodeHot100 超详细Agent启发版本】字母异位词分组 (Group Anagrams)
开发语言·javascript·人工智能·python
2601_949868369 小时前
Flutter for OpenHarmony 电子合同签署App实战 - 主入口实现
开发语言·javascript·flutter
m0_748229999 小时前
Vue2 vs Vue3:核心差异全解析
前端·javascript·vue.js
xiaoxue..9 小时前
React 手写实现的 KeepAlive 组件
前端·javascript·react.js·面试
摘星编程9 小时前
在OpenHarmony上用React Native:自定义useHighlight关键词高亮
javascript·react native·react.js
2601_9496130210 小时前
flutter_for_openharmony家庭药箱管理app实战+用药知识详情实现
android·javascript·flutter
一起养小猫10 小时前
Flutter for OpenHarmony 实战 表单处理与验证完整指南
android·开发语言·前端·javascript·flutter·harmonyos
xcs1940512 小时前
前端 项目构建问题 \node_modules\loader-runner\lib\loadLoader.js
开发语言·前端·javascript