我使用python与瓶框架。当用户单击按钮时,服务器应该生成文件并让用户下载它。当用户完全下载时,服务器应删除此文件。
有没有办法实现这个目标?
答案 0 :(得分:0)
我找到了this page (flask solution) 和this page(hooks plugin)以及this page(Forced Download)的方式。
这是我的解决方案:
将钩子“after_request”功能放入路线功能
我的部分代码:
下载页面模板(只有一个按钮):
<form id="export" calss="etable" method="POST" action="/download">
<input type="submit" name="export" value="export">
</form>
下载页面
@route('/download')
def download():
output = template('download',template_lookup=['./views'])
return output
点击按钮(生成文件并重定向下载)
@route('/download',method = 'POST')
def downloadPost():
zipname = zipFolder('./temp') #create files
if zipname is not None:
return redirect('/download/'+zipname)
else:
abort(500,'error.')
强制下载功能(在此部分中挂钩。)
@route('/download/<filename:path>')
def download_file(filename):
@hook('after_request')
def delFiles():
del('./temp/',filename) #delete file function
return static_file(filename, root='./temp/', download=filename)