您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flask投放后删除文件

Flask投放后删除文件

after_request在视图返回之后但发送响应之前运行。发送文件可能会使用流式响应。如果在未完全读取之前将其删除,则可能会出错。

这在Windows上主要是一个问题,其他平台可以将文件标记为已删除并保留该文件,直到不被访问为止。但是,无论平台如何,仅在确定已发送文件后才删除它仍然有用。

文件读入内存并提供服务,因此以后删除文件时不会将其读取。如果文件太大而无法读入内存,请使用生成器提供该文件,然后将其删除

@app.route('/download_and_remove/<filename>')
def download_and_remove(filename):
    path = os.path.join(current_app.instance_path, filename)

    def generate():
        with open(path) as f:
            yield from f

        os.remove(path)

    r = current_app.response_class(generate(), mimetype='text/csv')
    r.headers.set('Content-Disposition', 'attachment', filename='data.csv')
    return r
Python 2022/1/1 18:44:31 有308人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶