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

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)  

【讨论】:

以上是关于用户使用瓶子框架下载后如何删除文件...?的主要内容,如果未能解决你的问题,请参考以下文章

如何即时生成文件并在下载后将其删除?

如何删除SSH key-Mac 软件使用与分享

使用 AWS 开发工具包从 Amazon S3 下载文件后如何删除文件

下载后如何从 azure blob 存储中删除文件

Data如何删除?

如何使用Selenium RemoteWebDriver删除下载的文件?