用户下载瓶框后如何删除文件...?

时间:2015-09-22 06:40:16

标签: python python-2.7 bottle yocto

我使用python与瓶框架。当用户单击按钮时,服务器应该生成文件并让用户下载它。当用户完全下载时,服务器应删除此文件。

有没有办法实现这个目标?

1 个答案:

答案 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)