- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个基于 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)
我想执行一些逻辑(我们称它为 after_download()
)下载完成后。
我试过使用 @after_this_request
钩。但看起来 send_file()
是异步运行的,所以 @after_this_request
可能会在文件下载之前触发。
@after_this_request
似乎在下载文件时触发。send_file()
使用 WSGI 的文件包装器来实现下载...也许这就是它异步运行的原因?有没有一种方法可以调用 after_download()
以确保在 send_file()
完成 将文件发送到用户?
最佳答案
你不能。虽然 send_file
在使用开发服务器时使用 Flask 流式传输文件,但它可能(并且确实应该为了性能)使用网络服务器(nginx、apache 等)和 X-SendFile
在生产中。由于 Web 服务器超出了应用程序的控制范围,所以你运气不好。
关于python - 如何在 Flask send_file() 或 send_from_directory() 之后运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192132/
我想从服务器端向客户端发送一个图像文件。我正在使用 flask 框架。 但问题是每当我调用 send_file() 所在的路由时,响应返回的是一个文件。当我单击此文件时,gedit 打开它时该文件中没
我有一个 Perl Dancer Web 应用程序,它使用 GD 动态创建图像。我正在尝试将这些图像作为 PNG 提供给用户。例如: package MyApp; use Dancer ':synta
在我的项目中,我使用 Carrierwave 上传文件,如 doc 和 pdf . 如果我想下载 pdf 我的 Controller 做 send_file @document, :dispositi
我正在寻找一种下载 xml 文件的方法。我用: file_path = 'folder/' + xml_name + '.xml' send_file file_path, :type => "tex
我用flask编写了一个jQuery,点击它应该执行SQL搜索并将数据帧导出为excel,脚本是: $(function () { $('a#export_to_excel').bind
我有一个 Flask 应用程序,其中服务器使用一个 Flask route 创建一个 csv 文件并将其保存到服务器。使用客户端页面上生成的按钮,触发另一个 Flask route 来获取最新文件,将
有没有办法阻止 Flask 在 send_file 中设置缓存 header ,或者我必须在之后手动操作它们? 最佳答案 send_file 接受 cache_timeout 参数 - 只需将其设置为
我正在使用带有 send_file() 的 Flask 让人们从服务器下载文件。 我目前的代码如下: @app.route('/', methods=["GET", "POST"]) def inde
我正在使用 Flask 应用程序更新一些 PDF 文件,将它们转换为 Excel 文件并将该文件发送回用户。我正在使用实例文件夹来存储 pdf 和 excel 文件。 但是,当用户按下“下载”按钮以下
我正在编写一个 Flask 应用程序,其中有一个 HTTP 端点,它返回我在函数中创建的图像的 send_file。不幸的是,浏览器似乎缓存了该图像,甚至没有再次调用端点,而是在后续重新加载时加载原始
我正在使用 flask 的 send_file尝试让浏览器下载 .txt 文件的方法。问题是浏览器没有下载任何东西。 这是我的 python 函数: @app.route('/download_zip
我正在尝试读取用户上传的图像,然后将图像显示给他们。我想在不保存上传的图像文件的情况下执行此操作。 我有这样的代码: from flask import Flask, redirect, render
我有一个小的 flask 应用程序,它可以上传一些图像并将它们转换成多页 tiff。没什么特别的。 但是如何测试多个文件的上传和文件下载呢? 我的测试客户端: class RestTestCase(u
我目前正在开发一个服务器端 json 接口(interface),其中有几个临时文件在请求期间被操作。 我当前在请求结束时清理这些文件的解决方案如下所示: @app.route("/method",m
我正在尝试使用 Sinatra 的内置 send_file命令,但它似乎不适用于临时文件。 我基本上执行以下操作来压缩 mp3 专辑: get '/example' do songs = ...
我在 Sinatra 应用程序上使用 send_file: get '/update/dl/:upd' do filename ="/uploads/#{params[:upd]}"
我需要为 Apple 通用链接发送具有特定内容类型 (application/pkcs7-mime) 的文件。我使用 Rails 中的 send_file 函数,并添加 :type 作为参数,但类型始
调用 send_file 时,它会将文件发送到浏览器,但浏览器会将内容作为纯文本转储到新页面上,而不是下载文件。如果我刷新该页面,它会正常下载文件。 路线 get 'download' => 'q
我不知道如何通过 send_file 设置内容长度。 我检查了 api,没有内容长度参数。 最佳答案 您可以为响应设置 header ,例如: def download @file = Attac
如何测试发送文件的 Controller 操作? 如果我使用 controller.should_receive(:send_file) 执行此操作,测试会因“缺少模板”而失败,因为没有渲染任何内容。
我是一名优秀的程序员,十分优秀!