Flask 下载文件

2023-11-26

我正在尝试使用 Flask 创建一个网络应用程序,让用户上传文件并将其提供给另一个用户。现在,我可以将文件上传到上传文件夹正确。但我似乎找不到一种方法让用户下载回来。

我将文件名存储到数据库中。

我有一个为数据库对象提供服务的视图。我也可以删除它们。

@app.route('/dashboard', methods=['GET', 'POST'])
def dashboard():

    problemes = Probleme.query.all()

    if 'user' not in session:
        return redirect(url_for('login'))

    if request.method == 'POST':
        delete = Probleme.query.filter_by(id=request.form['del_button']).first()
        db.session.delete(delete)
        db.session.commit()
        return redirect(url_for('dashboard'))

    return render_template('dashboard.html', problemes=problemes)

在我的 HTML 中我有:

<td><a href="{{ url_for('download', filename=probleme.facture) }}">Facture</a></td>

和下载视图:

@app.route('/uploads/<path:filename>', methods=['GET', 'POST'])
def download(filename):
    return send_from_directory(directory=app.config['UPLOAD_FOLDER'], filename=filename)

但它正在回归:

未找到

在服务器上找不到请求的 URL。如果您手动输入 URL,请检查拼写并重试。

我只想将文件名链接到对象并让用户下载它(对于同一视图中的每个对象)


您需要确保传递给的值directory参数是绝对路径,已针对current您的应用程序的位置。

执行此操作的最佳方法是配置UPLOAD_FOLDER作为相对路径(无前导斜杠),然后通过前置将其设为绝对路径current_app.root_path:

@app.route('/uploads/<path:filename>', methods=['GET', 'POST'])
def download(filename):
    uploads = os.path.join(current_app.root_path, app.config['UPLOAD_FOLDER'])
    return send_from_directory(uploads, filename)

重要的是要重申UPLOAD_FOLDER必须是相对的才能起作用,例如不以a开头/.

相对路径could工作,但过于依赖当前工作目录设置为 Flask 代码所在的位置。情况可能并非总是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask 下载文件 的相关文章

  • Vimeo API:获取下载所有视频文件的链接列表

    再会 我正在尝试从 Vimeo 帐户获取所有视频文件的列表 直接下载的链接 有没有办法在 1 GET 请求中做到这一点 好的 如果是API限制的话 就100倍 我有硬编码脚本 我在其中发出 12 个 GET 请求 1100 多个视频 根据文
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c
  • 动态字段取决于 WTForms 的先前字段

    我正在使用 WTForms 制作表格 目前 我有这个 class UploadForm flask wtf Form fichier wtforms fields FileField u Fichier description wtform
  • Python3将模块从文件夹导入到另一个文件夹

    我的结构字典是 mainFolder folder1 init py file1 py file2 py folder2 init py file3 py file4 py setup py init py 我需要将 file4 py 从f
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • 使用会话在 Django 中将文件从一个视图传递到另一个视图

    我当前的工作项目要求我允许用户上传各种格式的文件 目前仅处理 CSV 格式 然后使用包含的数据来绘制图表Pandas http pandas pydata org 图书馆 我决定将图形渲染到模板的最简单方法是为图形创建特定视图 然后将图像从
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • AttributeError: 'super' 对象没有属性 '__getattr__' 在 Kivy 中使用带有多个 kv 文件的 BoxLayout 时出错

    我很清楚 这个问题已经被问过好几次了 但尝试以下解决方案后 Python Kivy AttributeError 尝试获取 self ids 时 super 对象没有属性 getattr https stackoverflow com qu
  • 如何将两列 pandas Dataframe 移动并堆叠为一列?

    我有一个下面提到的数据框 ETHNIC SEX USUBJID 0 HISPANIC OR LATINO F 16 1 HISPANIC OR LATINO M 8 2 HISPANIC OR LATINO Total 24 3 NOT H
  • tf.print() vs Python print vs tensor.eval()

    看来在Tensorflow中 至少有三种方法可以打印出张量的值 我一直在读here https www freecodecamp org news debugging tensorflow a starter e6668ce72617 an
  • SQLAlchemy 与 count、group_by 和 order_by 使用 ORM

    我有几个函数需要使用 count group by 和 order by 进行一对多连接 我使用 sqlalchemy select 函数生成一个查询 该查询将返回一组 id 然后我对其进行迭代以对各个记录执行 ORM 选择 我想知道是否有
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • Chrome 驱动程序和 Chromium 二进制文件无法在 aws lambda 上运行

    我陷入了一个问题 我需要在 AWS lambda 上做一些抓取工作 所以我按照下面提到的博客及其代码库作为起点 这非常有帮助 并且在运行时环境 Python 3 6 的 AWS lambda 上对我来说工作得很好 https manivan
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • 为什么弹性物品不包裹?

    我正在尝试制作多行具有相同高度的正方形 每行 3 个 我为此编写了一些 HTML 和 CSS 但这些框都位于同一行 这是我到目前为止所拥有的 list wrapper display flex width 100 list wrapper
  • 自动 XSD 验证

    根据 lxml 文档 DTD 是根据解析文档的 DOCTYPE 自动检索的 您所要做的就是使用启用了 DTD 验证的解析器 http lxml de validation html validation at parse time 但是 如
  • 简单的日志文件格式

    我不确定是否有人问过 但我找不到这样的东西 我的程序使用一个简单的 txt 文件用于日志目的 它只是创建 打开一个文件并附加行 一段时间后 我开始记录相当多的活动 因此文件变得太大并且难以读取 我知道 这不是写的方式来做到这一点 但我只需要
  • 在网页中嵌入视频 (HTML)

    我想在网页中嵌入视频 我不想使用 Flash 因为它不适用于大量平台 我不愿意使用 HTML5 因为它还不太标准 它是标准 但大多数人没有支持它的浏览器 还有其他办法吗 或者我应该坚持使用 HTML5 和一个巨大的横幅告诉人们升级他们的浏览
  • ASP.NET ConnectionString AttachDbFilename=|数据目录|

    这是关于 ConnectionStrings ASP NET MVC 与 Visual Studio 2012 Ultimate 和 SQL Server Express 2012 的内容 在此继续本教程 http www asp net
  • 与伞式框架的链接

    我有 ios 应用程序 我想在其中实现 Flurry analytics 导入 Flurry 并 ling libsystem network dylib 后 我遇到了这个无法解决的问题 ld cannot link directly wi
  • Django/mod_wsgi OSError: [Errno 13] 权限被拒绝: 当 DEBUG = OFF 时为“静态”

    我在 Centos 6 2 服务器 运行 apache mysql php 上有一个 Django 1 4 应用程序 使用 mod wsgi 并将我的项目部署在虚拟环境中 该应用程序本身是我在托管服务上使用多年的应用程序 现在我正在自己的机
  • next.js getStaticPaths 列出每个路径还是仅列出附近的路径?

    使用 Next js 导出静态页面 我在动态路由中得到了这样的结果pages id js我放入的任何路径getStaticPaths将创建部分 凉爽的 列出每一页是否更好 getStaticPaths return some functio
  • 将 Powerpoint 演示嵌入到 C# 应用程序中

    我希望能够将 powerpoint 演示文稿嵌入到 C 表单 WinForms 中 基本上我们有一台 52 英寸的显示器 其想法是在一个角落循环播放 PPT 然后其他 3 个角落将显示程序本身的信息 我原以为这会很简单 但看来我错了 有人建
  • Windows 文件路径路径中的空格

    我正在使用 python 进行文件操作 我的文件路径为 filepath E ABC SEM 2 testfiles all txt 当我使用 python 打开文件时 它说 IOError No such file 但是 该文件存在于驱动
  • 如何在重定向到外部页面之前在 jquery 中预加载(缓存)该页面?

    我正在做一个phonegap应用程序 我有一个 index html 页面 其中有一个重定向到网站应用程序的登录按钮 当点击登录按钮时 我想要一个加载 gif 来显示页面 正在被缓存 预加载并在完成后重定向到页面 我希望有一个示例脚本代码
  • 改变material-ui按钮的字体大小,并让按钮缩放?

    我似乎在更改 Material UI 用于 React RaishedButton 上的字体大小以及让按钮本身与其正确缩放时遇到问题
  • Visual Studio 中的静态和动态链接

    我理解静态和动态链接的概念 据了解 在Windows平台上 dll是动态库和 lib是静态库 我的困惑 我做了一个必须使用 OpenCV 库的项目 基本上 我必须使用以下 5 个 OpenCV 库 lopencv core lopencv
  • jQuery $.post 和 json_encode 返回一个带有引号的字符串

    我正在使用 jQuery 的 post 调用 它返回一个带有引号的字符串 引号是由 json encode 行添加的 如何阻止添加引号 我在 post 通话中遗漏了什么吗 post getSale php function data con
  • 检查表是否存在[重复]

    这个问题在这里已经有答案了 我有一个桌面应用程序 其中嵌入了数据库 当我执行程序时 我需要检查特定的表是否存在 如果不存在则创建它 给定我的数据库的名为 conn 的 Connection 对象 我如何检查它 DatabaseMetaDat
  • JavaScript 执行连接到 mongoHQ shell 失败

    尝试直接访问 MongoHQ gt mongo mongodb heroku email protected 10046 myapp MongoDB shell version 2 4 3 connecting to mongodb her
  • 是否可以通过编程方式清除控制台历史记录?

    使用控制台应用程序时 在某个位置输入的所有内容的历史记录Console ReadLine 被储存了 当控制台提示输入某些内容时 按向上 向下光标将滚动浏览此历史记录 并且可以通过按 F7 查看整个历史记录 使用 C 是否有办法禁用此行为或清
  • 从 YouTube 网址获取持续时间

    我正在寻找一个函数 可以从 url 中提取视频的 YouTube 持续时间 我读了一些教程但不明白 我使用网址在我的网站上嵌入视频 并且我有一个提取缩略图的功能 我只想要类似的东西来获取持续时间 这是我如何获得拇指 function get
  • iOS:应用程序内购买管理多个自动续订订阅,具有升级和降级选项

    我们正在为 iPhone 开发一款 iOS 应用程序 该应用程序将具有免费功能 并且该应用程序将具有高级功能 其中有 4 个应用程序内购买自动续订订阅选项 如下所示 单月订阅 单年订阅 家庭包月 家庭每年订阅 我们将在应用程序内有一个商店屏
  • Flask 下载文件

    我正在尝试使用 Flask 创建一个网络应用程序 让用户上传文件并将其提供给另一个用户 现在 我可以将文件上传到上传文件夹正确 但我似乎找不到一种方法让用户下载回来 我将文件名存储到数据库中 我有一个为数据库对象提供服务的视图 我也可以删除