实现 Browser 客户端下载 XML 文件功能
后端
- 使用 io.BytesIO 方法 创建一个字节缓冲区在不需要磁盘文件的情况下进行文件操作
- 打包为 zip 压缩包(上图代码)
- in_memory_zip.seek(0) 数据写入ZIP后文件指针会停留在缓冲区的末尾将文件指针重置回开头
- make_response() 方法用于创建HTTP响应的函数
- .getvalue() 方法返回内存中ZIP文件的完整内容返回给客户端
- Content-Disposition : 告诉浏览器或客户端这个响应应该被当作一个附件来处理
- 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 必要!!!