使用方法:
輸入地址:例如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()