对象存储用的是minio,所以是先到minio中取到文件,然后读取,存在本地指定目录,然后再通过迭代器读取的方式去读取文件返回给前端(怕一次性读取太多造成服务器卡死)

直接上代码:

import zipfiledef file_iterator(file_path, chunk_size=512):"""  文件读取迭代器:param file_path:文件路径:param chunk_size: 每次读取流大小:return:"""with open(file_path, 'rb') as target_file:while True:chunk = target_file.read(chunk_size)if chunk:yield chunkelse:break# 指定打包后的文件存储路径
download_path = settings.DADI_DIR
file_path = download_path + 'compress.zip'
# 创建一个zip对象,第一个参数是路径,第二个参数w是写入的意思,有r/w/a三种模式,分别代表读、写、添加,默认为r,即读模式。
zipFile = zipfile.ZipFile(file_path , 'w')
# doc.Doc().get_object(i)方法是从minio里面获取文件的Response对象,以下是将多个文件写入压缩文件中
# 你也可以不用这样写,在后面的writestr方法第二个参数中直接传前端传过来的文件流二进制也行
for i in doc_list:x = doc.Doc().get_object(i)# writestr方法是将一个文件写入存档。第二个参数,它可以是'str'或'bytes'实例;如果它是“str”,它首先被编码为UTF-8。第一个参数要么是ZipInfo实例,要么是ZIP文件中的文件名zipFile.writestr(x['name'], x['download_data'].read(), zipfile.ZIP_DEFLATED)
zipFile.close()
# FileResponse专门是用来处理二进制文件的
rep = FileResponse(file_iterator(file_path), content_type='APPLICATION/OCTET-STREAM')
# compress.zip 为返回的文件名
rep['Content-Disposition'] = "attachment; filename="+urlquote('compress.zip')
return rep

需要注意的是,如果是大文件的话,还是不建议直接返回,会受到http的请求体长度限制还有nginx里面也需要配置,建议采用返回链接的形式给前端,将文件存到对象存储服务器,然后调用对象存储服务器的SDK获得文件的下载链接,返回

python获取二进制文件流,压缩并下载相关推荐

  1. python数据压缩和流压缩-zlib

    最近在忙一个xmpp协议的项目,用到了zlib流式压缩(我很菜,第一次听说),搞了一阵子乌龙事件,就是没有分清楚一次性压缩和流式压缩.幸好,经过一晚上琢磨搞明白了,记录下,顺便帮助其他人.如有不对,请 ...

  2. react集成react-pdf获取文件流预览下载pdf,展示电子签章

    1.下载依赖包 代码如下(示例): npm install react-pdf 2.引入依赖包 代码如下(示例): import { Document, Page } from 'react-pdf' ...

  3. python获取藏头诗_1_下载全国历代古诗

    使用python 下载全国历代古诗 打开CMD 安装以下程序 pip install requests pip install lxml 以下是全部代码 import requests from lx ...

  4. 前端get请求接收后端传来的二进制文件流blob实现下载功能,解决下载文件打不开问题

    解决方法:         前端在请求下载文件接口时,要设置responseType为blob. 前端代码: export function download(url, params) {return ...

  5. python电脑下载方法-python 获取机器snpython下载文件的几种常用方法

    python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下: 002pc.com从python 获取机器snpython下载文件的几种常用方法分析来看 ...

  6. python获取网页图片_Python获取网页上图片下载地址的方法

    本文实例讲述了Python获取网页上图片下载地址的方法.分享给大家供大家参考.具体如下: 这里获取网页上图片的下载地址是正在写的数据采集中的一段,代码如下: #!/user/bin/python3 i ...

  7. 前端下载文件(二进制文件流brob和url下载)

    第一种二进制文件流brob下载文件 1首先自己在request封装一个get请求 引入main.js import axios from 'axios'; import qs from 'qs'; i ...

  8. python 获取excel信息,下载对应图片

    python 获取excel信息,下载对应图片 import pandas as pd from openpyxl import load_workbook import requests impor ...

  9. python读取二进制文件_python读取二进制流 Python二进制方式读写文件 - 电脑常识 - 服务器之家...

    python读取二进制流 Python二进制方式读写文件 发布时间:2017-03-18 来源:服务器之家 这两天用Python解析ELF二进制文件,遇到了不少问题,总结整理如下,以便加深对Pytho ...

最新文章

  1. sql表合并,统计计算,生成总计
  2. react的一些思考
  3. C++学习笔记:(二)函数重载 常量与引用
  4. 泰国能源部携手本土企业打造智慧城市
  5. asterisk使用MYSQL认证的配置方法
  6. 大型网站电商网站架构案例和技术架构的示例
  7. linux mysql python包_03_mysql-python模块, linux环境下python2,python3的
  8. 让vs编写的程序在未安装vs的电脑上使用的一种方法
  9. Understanding .NET Code Access Security
  10. 北京的一場演出-私人行程
  11. RESTLET开发实例
  12. AutoCAD2018/2019中文破解版,下载与激活
  13. podman加速器harbor私有镜像仓库
  14. php设计器中文版,PhpDesigner
  15. 网课公众号搜题接口获取教程
  16. 像素密度(衡量屏幕显示能力)
  17. 【致远FAQ】V8.0sp1_单位管理员账号在流程督办监控中撤销流程后,流程中的人员会收到消息提醒吗
  18. 8.5 Polytopes (多面体)
  19. Android Zygote进程启动过程
  20. Excel自定义排序

热门文章

  1. 谷歌浏览器audio标签自动播放音乐问题解决
  2. Jester5k 数据集推荐系统模型预测R语言实现
  3. 帝国CMS仿猫啃字体下载网整站源码自适应个人博客类模板
  4. 人工智能 java 坦克机器人系列: 强化学习_人工智能 Java 坦克机器人系列: 强化学习...
  5. 一团燃烧人性的实验之火——《野火(1959)》影评
  6. 信息系统分析与设计——信息、管理与信息系统
  7. pycharm里强制升级pip版本
  8. python海伦公式_「海伦公式」海伦公式: - seo实验室
  9. 百度指数、360指数爬虫python版:基于selenium+chrome和图像识别技术
  10. THREE DAY | 网络安全之Linux(包含Linux常用命令,镜像下载,docker命令等内容)超详细!!!