首页 > 编程知识 正文

java解压缩zip文件,byredo

时间:2023-05-04 14:12:11 阅读:17599 作者:3340

要求描述Flask开发的系统后台要求将一些程序生成的文本数据和二进制内存对象打包成zip文件提供给客户端,并直接从浏览器下载。 最初的想法是将文本和二进制数据分别写入磁盘,打包后作为临时文件删除,但觉得这样有点吵,效率不高。 研究了实际上是否可以直接对内存进行这些操作,直接扔到Flask的send_filllk上 实现进程import ioimport zipfile#模拟数据txt1=' hello ' txt2=' world ' mydgq1=b 'xxxxx

' mydgq2=b ' yyyy ' def pack _ up (: _ io=io.bytes io )内存中对应的二进制io对象ZF=zipfile.zipfile (' w ZipFile.ZIP_DEFLATED ) #使用上面的IO对象作为参数初始化zipfile对象,' w '表示写入,第三个参数是压缩算法(下面是writestr ) )方法请注意,文本内容和二进制内容都使用此方法ZF.writestr ) )将txt1) #txt1的内容转换为压缩包中的txt1.txt文件ZF.Writestr('txt2.txt ', txt2) #添加到压缩包中的txt2.txt文件ZF.Writestr ) ' mydgq1.writestr ) mydgq1) #mydgq1的内容在压缩包中的mydgq1.mydgq文件ZF.Writestr 将mydgq2内容添加到压缩包中的mydgq2.mydgq文件# zf.filelist#可以显示已向当前创建的ZipFile对象添加了四个文件的信息。 请注意,添加ZF.close(#文件后关闭。 否则,稍后将文件写入磁盘或直接扔向Flask发送也会出错。 #如果需要将当前创建的zip文件写入磁盘,请执行以下操作:withopen('d:XXX.zip ):' 如果需要抛向wb ' ) ASF:f.write(io.getbuffer ) ) Flask,可以使用路由函数通过以下方式手动创建响应并将其返回给客户端: (此处省略导入。 仅限想法提示(3360 resp=make _ response (io.getvalue ) ) resp.headers (' content-disposition ' )='attachement; filename=export.zip ' resp.headers [ ' content-type ' ]=' application/zip ' return resp

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。