toh*_*ter 9 python download werkzeug flask
我有一个基于Flask的网站,用户可以下载一些PDF文件.
这很容易使用Flask send_file()和send_from_directory().
例如:
@app.route('/downloadreport')
def download_report():
return send_from_directory(
'/reports',
'my_report.pdf',
as_attachment=True)
Run Code Online (Sandbox Code Playgroud)
我想在下载完成后执行一些逻辑(让我们称之为after_download()).
我试过使用@after_this_request钩子.但它看起来像是send_file()异步运行,因此@after_this_request可能会在下载文件之前触发.
@after_this_request在下载文件时似乎会触发.send_file()使用WSGI的文件包装器来实现下载......也许这就是为什么它以异步方式运行?有没有一种方法来调用after_download(),这样它保证后运行send_file()已完成的文件发送到用户?
你不能.在send_file使用开发服务器时使用Flask流式传输文件,它可能(并且实际上应该用于性能)使用Web服务器(nginx,apache等)并X-SendFile在生产中使用.由于Web服务器无法控制应用程序,因此您运气不佳.
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |