您的位置:首页 > 编程语言 > Python开发

文件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()

   

          

            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml