文件zip打包,流式下载python 代码
2013-04-22 20:14
766 查看
使用方法:
输入地址:例如http://0.0.0.0:8000?abc,def
#!usr/bin/python
#coding=utf-8
import uuid
import os
import zipfile
import re
import sys
import officetoimage
import rarfile
import tarfile
import subprocess
from cherrypy import wsgiserver
import time
import threading
########SET CODE TO DEAL CHINESE############
default_encoding = 'utf-8'
if sys.getdefaultencoding()!=default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
def app(environ,start_response):
out = 'tmp/'+str(uuid.uuid1())+'.zip'
status = '200 OK'
filename = 'test.zip'
response_header = [('Content-type','application/'+out),('Content-disposition','attachment;filename='+filename)]
start_response(status,response_header)
#dict_e = get_environ()
filename_list = environ['QUERY_STRING'].split(',')
if os.path.exists('tmp') is not True:
os.makedirs('tmp',0755)
position = 0
flag = True
archive = zipfile.ZipFile(out,'a',zipfile.ZIP_DEFLATED)
strs = open(out,'rb')
for filename in filename_list:
if os.path.isfile(filename):
archive.write(filename)
strs.seek(position)
result = strs.read()
position = strs.tell()
yield result
else:
for root,dirs,files in os.walk(filename):
for file in files:
archive.write(os.path.join(root,file))
strs.seek(position)
result = strs.read()
position = strs.tell()
yield result
archive.close()
strs.seek(position)
result = strs.read()
position = strs.tell()
yield result
return
if __name__ == '__main__':
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0',8000),app)
server.start()
输入地址:例如http://0.0.0.0:8000?abc,def
#!usr/bin/python
#coding=utf-8
import uuid
import os
import zipfile
import re
import sys
import officetoimage
import rarfile
import tarfile
import subprocess
from cherrypy import wsgiserver
import time
import threading
########SET CODE TO DEAL CHINESE############
default_encoding = 'utf-8'
if sys.getdefaultencoding()!=default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
def app(environ,start_response):
out = 'tmp/'+str(uuid.uuid1())+'.zip'
status = '200 OK'
filename = 'test.zip'
response_header = [('Content-type','application/'+out),('Content-disposition','attachment;filename='+filename)]
start_response(status,response_header)
#dict_e = get_environ()
filename_list = environ['QUERY_STRING'].split(',')
if os.path.exists('tmp') is not True:
os.makedirs('tmp',0755)
position = 0
flag = True
archive = zipfile.ZipFile(out,'a',zipfile.ZIP_DEFLATED)
strs = open(out,'rb')
for filename in filename_list:
if os.path.isfile(filename):
archive.write(filename)
strs.seek(position)
result = strs.read()
position = strs.tell()
yield result
else:
for root,dirs,files in os.walk(filename):
for file in files:
archive.write(os.path.join(root,file))
strs.seek(position)
result = strs.read()
position = strs.tell()
yield result
archive.close()
strs.seek(position)
result = strs.read()
position = strs.tell()
yield result
return
if __name__ == '__main__':
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0',8000),app)
server.start()
相关文章推荐
- 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
- 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
- 几行代码轻松实现PHP文件打包下载zip
- Java实现文件自动打包成zip并下载的代码
- 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
- 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
- Java实现文件自动打包成zip并下载的代码
- Java多文件下载打包zip返回客户端,不写入本地
- Java打包下载ZIP压缩文件
- springmvc批量文件打包成zip下载功能
- [转] 三种Python下载url并保存文件的代码
- ThinkPHP实现将本地文件打包成zip下载
- zip压缩打包文件下载
- spingmvc 文件下载打包zip
- 三种Python下载url并保存文件的代码
- java实现word下载及打包成zip下载(单个文件、多个文件)
- 【转载】用PyInstaller把Python代码打包成单个独立的exe可执行文件
- 使用pyinstaller工具打包python项目代码生成exe文件
- 使用PHP的ZipArchive类实现多个文件的zip压缩包打包下载
- JAVA代码实现下载单个文件,和下载打包文件