用户使用瓶子框架下载后如何删除文件...?
Posted
技术标签:
【中文标题】用户使用瓶子框架下载后如何删除文件...?【英文标题】:How to delete file after user download with bottle framework...? 【发布时间】:2015-12-19 00:41:03 【问题描述】:我使用 python 和瓶子框架。当用户单击一个按钮时,服务器应该生成文件并让用户下载它。当用户完全下载后,服务器应该删除这个文件。
有什么办法可以做到吗?
【问题讨论】:
您尝试过还是希望我们为您编写代码? 我找到了一些信息,看起来应该使用 hooks 插件...?但是,我无法理解如何使用它... 好吧,这里是 Stack Overflow。所以我认为你应该先用谷歌搜索你的问题。并尝试编写一些代码。如果您运行代码并遇到错误,那么您可以在这里提问。 我先用谷歌搜索了我的问题,但是很多关于烧瓶框架的结果...... 嗯...你是对的。但我想你还是不会问这样的问题……让我再搜索一下。 【参考方案1】:我通过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)
【讨论】:
以上是关于用户使用瓶子框架下载后如何删除文件...?的主要内容,如果未能解决你的问题,请参考以下文章