just for fun
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0',8000),app)
server.start()
是程序入口,其中app是你的应用程序
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(',')
其中,需要下载文件,其实我是个http小白,然后,发现只要修改header里面的content-type就可以了,修改为zip
你打开网址就可以下载了
但是,我需要得到要打包的文件名称
这个在uri中传入
我发现,这个environ就是携带这些信息的载体
哈哈
顺利完成
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
文档上说,返回的是个迭代器,如果是unbuffered file,其实,我当然不懂啊,所以,我想着迭代器,那写一个迭代器生成器就可以了
果然,我成功率
这个代码可以边打包边下载啊
哈哈,看着开源代码为我做的贡献,我或许也应该做出些表示吧哈哈