从基于 Flask 的 Python 服务器下载文件

2023-11-23

我正在尝试使用我在以下 URL 找到的代码:http://code.runnable.com/UiIdhKohv5JQAAB6/how-to-download-a-file- generated-on-the-fly-in-flask-for-python

我的目标是当用户访问基于 Flask 的 Python 服务器上的 Web 服务时能够在 Web 浏览器上下载文件。

所以我写了下面的代码:

@app.route("/api/downloadlogfile/<path>")
def DownloadLogFile (path = None):
    if path is None:
        self.Error(400)

    try:
        with open(path, 'r') as f:
            response  = make_response(f.read())
        response.headers["Content-Disposition"] = "attachment; filename=%s" % path.split("/")[2]

        return response
    except Exception as e:
        self.log.exception(e)
        self.Error(400)

但这段代码似乎不起作用。事实上,我遇到了一个我无法修复的错误:

Traceback (most recent call last):
File "C:\Python27\lib\site-packages\gevent\pywsgi.py", line 508, in handle_one_response
self.run_application()
File "C:\Python27\lib\site-packages\geventwebsocket\handler.py", line 88, in run_application
return super(WebSocketHandler, self).run_application()
File "C:\Python27\lib\site-packages\gevent\pywsgi.py", line 495, in run_application
self.process_result()
File "C:\Python27\lib\site-packages\gevent\pywsgi.py", line 484, in process_result
for data in self.result:
File "C:\Python27\lib\site-packages\werkzeug\wsgi.py", line 703, in __next__
return self._next()
File "C:\Python27\lib\site-packages\werkzeug\wrappers.py", line 81, in _iter_encoded
for item in iterable:
TypeError: 'Response' object is not iterable

我将 Flask 和 Werkzeug 包更新到最新版本,但没有成功。

如果有人有想法那就太好了。

提前致谢


解决这个问题的最好方法是使用已经预定义的辅助函数send_file()在烧瓶中:

from flask import send_file

@app.route("/api/downloadlogfile/<path>")
def DownloadLogFile (path = None):
    if path is None:
        self.Error(400)
    try:
        return send_file(path, as_attachment=True)
    except Exception as e:
        self.log.exception(e)
        self.Error(400)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从基于 Flask 的 Python 服务器下载文件 的相关文章

  • 查找 with: 块中定义的函数

    这是一些代码理查德 琼斯的博客 http www mechanicalcat net richard log Python Something I m working on 3 with gui vertical text gui labe
  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • Python Flask 是否定义了路由顺序?

    在我看来 我的设置类似于以下内容 app route test def test app route
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • Pandas 在特定列将数据帧拆分为两个数据帧

    I have pandas我组成的 DataFrameconcat 一行由 96 个值组成 我想将 DataFrame 从值 72 中分离出来 这样 一行的前 72 个值存储在 Dataframe1 中 接下来的 24 个值存储在 Data
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html

随机推荐

  • 如何将相对布局设置为默认布局

    我通常在大部分活动中使用相对布局 我想让 Android studio 在创建新活动时默认创建相对布局 而不是约束布局 有没有办法做到这一点 右键单击布局文件夹 gt 新建 gt 编辑文件模板 打开一个对话框 转到 其他 选项卡 更改内容
  • C++11 从频繁变化的范围生成随机数

    问 如何从先验未知范围生成 许多 均匀分布的整数 就性能而言 生成数百万个数字 首选方式是什么 上下文 在我的应用程序中 我必须在许多地方生成许多伪随机数 我对生成器使用单例模式来保持应用程序运行的可重复性 在我的例子中 分布总是均匀的 但
  • 使用 jquery 动态创建元素

    我正在尝试使用 jquery 创建元素 当我单击链接时 我想创建一个元素 p 给它一些文本 然后将其放入我的一个 div 中 另外 我想检查点击了哪个链接 这样我就可以将创建的 p 放在右侧的 div 中 关于我做错的地方有什么解决方案吗
  • 为什么新样式类和旧样式类在这种情况下有不同的行为?

    我发现了一些有趣的东西 这是一段代码 class A object def init self print A init def del self print A del class B object a A 如果我运行这段代码 我将得到
  • Android 图像滤镜库

    是否有适用于 Android 的图像库 如http www jhlabs com ip filters index html 或者有人移植过同样的东西吗 提前致谢 我知道这是一个老话题 但在没有 AWT 库的情况下 我已经开始移植一些图像滤
  • d3-cloud 的打字

    我想用d3 cloud在我的 Angular2 应用程序中生成词云 但是 我无法找到要安装的正确类型 我试过this但是当我尝试将其导入到我的组件中时 它不起作用 我不断收到错误 在类型中找不到属性布局 有人可以帮我解决这个问题吗 我想出了
  • 简单标题未显示在 UINavigationController 中

    我已经查看了所有类似 相关的问题 但没有一个是a 完全是我的问题 或者2 解决方案不起作用 在我的 appDelegate m 中 我有 didFinishLaunchingWithOptions JCGRootNavigationCont
  • 以编程方式更改 SQL Server 设置

    我请求你仔细阅读我的问题 您可能知道 当您安装带有 SQL Server Express 版本的 VS2005 2008 时 SQL Server 默认以 Windows 身份验证模式运行 您可以使用 SQL Server Manageme
  • 如何解决 RapidXML 字符串所有权问题?

    RapidXML是一个快速 轻量级的 C XML DOM 解析器 但它有一些怪癖 在我看来 其中最糟糕的是 3 2 字符串的所有权 RapidXml 生成的节点和属性不 拥有它们的名称和值字符串 他们 只需持有指向它们的指针即可 这 意味着
  • 如何使用抽屉导航锁定特定页面的抽屉 [react-navigation][react-native]

    这是我的抽屉导航 const DashboardStack StackNavigator Dashboard screen Dashboard headerMode screen const DetailsformStack StackNa
  • 按字段的前两个字符对 SQL 进行排序

    我正在尝试按销售人员姓名缩写对一些数据进行排序 销售代表字段的长度为 3 个字符 并且是名字 姓氏和帐户类型 所以 鲍勃史密斯将是 BS 我只需要按前两个字符排序 如何提取某个代表的所有数据 其中字段的前两个字符等于 BS 在某些数据库中你
  • 在Python中检测64位操作系统(windows)

    有谁知道我将如何检测 Windows 在 Python 下的位版本 我需要知道这是一种使用正确的程序文件文件夹的方法 非常感谢 我认为 Mark Ribau 已经发布了该问题的最佳解决方案 Python 2 7 及更高版本的问题的最佳答案是
  • 使用plot.ly Dash 等待结果时显示加载符号

    In my Dash基于应用程序 按钮触发长时间运行的计算 在结果尚未出现时显示加载动画并使按钮处于非活动状态以便在计算完成之前不会再次单击该按钮不是很好吗 我在用Bulma用于 UI 设计并想使用button is loading为此目的
  • 为什么 typescript-eslint 对 enumMember 强制采用驼峰命名法?

    TypeScript 文档中的所有枚举示例写入枚举成员作为帕斯卡命名法 例如 enum Direction Up 1 Down Left Right But typescript eslint 命名约定强制使用驼峰命名法 并拒绝帕斯卡命名法
  • 我可以使用谷歌地图 API v3 来获取位置的时区吗?

    是否可以使用谷歌地图API来获取时区 我已经在使用它的 api 进行地理编码和地图显示 我还想添加时区 但我在文档中找不到任何内容 有任何想法吗 链接 您可以使用时区API 例如 使用 jQuery ajax url https maps
  • NodeJS:如何将base64编码的字符串解码回二进制? [复制]

    这个问题在这里已经有答案了 我正在使用 salt 实现密码哈希 因此我将 salt 生成为二进制 对密码进行哈希处理 对密码和 salt 进行 Base64 编码 然后将它们存储到数据库中 现在 当我检查密码时 我应该将盐解码回二进制数据
  • Android 从布局视图创建并打印 pdf

    我正在尝试从 xml 布局视图创建 PDF 文件 我在该布局中有一个列表视图 添加项目并根据子项设置高度 PDF 正在创建但未填充整个页面 我尝试过的是 PdfDocument PageInfo pageInfo new PdfDocume
  • Android中如何获取唯一的设备硬件ID? [复制]

    这个问题在这里已经有答案了 如何获取 Android 中唯一的设备 ID 该 ID 在执行手机重置或操作系统更新时无法更改 更新 19 11 2019 下面的答案与今天不再相关 因此 对于任何寻找答案的人 您应该查看下面链接的文档 http
  • 使用 java 中的 toUpperCase() 将 ß.cfg 转换为大写

    我正在尝试以下代码 String s1 cfg System out println s toUpperCase 我得到的输出是SS CFG因为 Unicode 没有定义 的大写版本 而我希望输出为 CFG 我有什么办法可以实现这一目标吗
  • 从基于 Flask 的 Python 服务器下载文件

    我正在尝试使用我在以下 URL 找到的代码 http code runnable com UiIdhKohv5JQAAB6 how to download a file generated on the fly in flask for p