python获取二进制文件流,压缩并下载
对象存储用的是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获取二进制文件流,压缩并下载相关推荐
- python数据压缩和流压缩-zlib
最近在忙一个xmpp协议的项目,用到了zlib流式压缩(我很菜,第一次听说),搞了一阵子乌龙事件,就是没有分清楚一次性压缩和流式压缩.幸好,经过一晚上琢磨搞明白了,记录下,顺便帮助其他人.如有不对,请 ...
- react集成react-pdf获取文件流预览下载pdf,展示电子签章
1.下载依赖包 代码如下(示例): npm install react-pdf 2.引入依赖包 代码如下(示例): import { Document, Page } from 'react-pdf' ...
- python获取藏头诗_1_下载全国历代古诗
使用python 下载全国历代古诗 打开CMD 安装以下程序 pip install requests pip install lxml 以下是全部代码 import requests from lx ...
- 前端get请求接收后端传来的二进制文件流blob实现下载功能,解决下载文件打不开问题
解决方法: 前端在请求下载文件接口时,要设置responseType为blob. 前端代码: export function download(url, params) {return ...
- python电脑下载方法-python 获取机器snpython下载文件的几种常用方法
python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下: 002pc.com从python 获取机器snpython下载文件的几种常用方法分析来看 ...
- python获取网页图片_Python获取网页上图片下载地址的方法
本文实例讲述了Python获取网页上图片下载地址的方法.分享给大家供大家参考.具体如下: 这里获取网页上图片的下载地址是正在写的数据采集中的一段,代码如下: #!/user/bin/python3 i ...
- 前端下载文件(二进制文件流brob和url下载)
第一种二进制文件流brob下载文件 1首先自己在request封装一个get请求 引入main.js import axios from 'axios'; import qs from 'qs'; i ...
- python 获取excel信息,下载对应图片
python 获取excel信息,下载对应图片 import pandas as pd from openpyxl import load_workbook import requests impor ...
- python读取二进制文件_python读取二进制流 Python二进制方式读写文件 - 电脑常识 - 服务器之家...
python读取二进制流 Python二进制方式读写文件 发布时间:2017-03-18 来源:服务器之家 这两天用Python解析ELF二进制文件,遇到了不少问题,总结整理如下,以便加深对Pytho ...
最新文章
- sql表合并,统计计算,生成总计
- react的一些思考
- C++学习笔记:(二)函数重载 常量与引用
- 泰国能源部携手本土企业打造智慧城市
- asterisk使用MYSQL认证的配置方法
- 大型网站电商网站架构案例和技术架构的示例
- linux mysql python包_03_mysql-python模块, linux环境下python2,python3的
- 让vs编写的程序在未安装vs的电脑上使用的一种方法
- Understanding .NET Code Access Security
- 北京的一場演出-私人行程
- RESTLET开发实例
- AutoCAD2018/2019中文破解版,下载与激活
- podman加速器harbor私有镜像仓库
- php设计器中文版,PhpDesigner
- 网课公众号搜题接口获取教程
- 像素密度(衡量屏幕显示能力)
- 【致远FAQ】V8.0sp1_单位管理员账号在流程督办监控中撤销流程后,流程中的人员会收到消息提醒吗
- 8.5 Polytopes (多面体)
- Android Zygote进程启动过程
- Excel自定义排序
热门文章
- 谷歌浏览器audio标签自动播放音乐问题解决
- Jester5k 数据集推荐系统模型预测R语言实现
- 帝国CMS仿猫啃字体下载网整站源码自适应个人博客类模板
- 人工智能 java 坦克机器人系列: 强化学习_人工智能 Java 坦克机器人系列: 强化学习...
- 一团燃烧人性的实验之火——《野火(1959)》影评
- 信息系统分析与设计——信息、管理与信息系统
- pycharm里强制升级pip版本
- python海伦公式_「海伦公式」海伦公式: - seo实验室
- 百度指数、360指数爬虫python版:基于selenium+chrome和图像识别技术
- THREE DAY | 网络安全之Linux(包含Linux常用命令,镜像下载,docker命令等内容)超详细!!!