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,其實,我當然不懂啊,所以,我想著迭代器,那寫一個迭代器產生器就可以了
果然,我成功率
這個代碼可以邊打包邊下載啊
哈哈,看著開原始碼為我做的貢獻,我或許也應該做出些表示吧哈哈