【问题标题】:Python - save BytesIO in databasePython - 将 BytesIO 保存在数据库中
【发布时间】:2020-08-27 07:32:20
【问题描述】:

所以我正在尝试创建一个二进制文件并将其保存到我的数据库中。我正在使用 REDIS 和 SQLALCHEMY 作为我的数据库的框架。每当用户访问 URL 时,我都可以使用 send_file 发送实际文件,但是如何确保文件保存在路由中,并且每次用户访问 URL 时它都可以保留在那里。

我正在从客户端 python 发送文件,它不在我的 目录

简而言之,我需要将文件从客户端 python 保存到数据库中,以便将其“下载”到浏览器客户端,以便浏览器客户端实际上可以使用它有什么方法可以做到这一点?也许是我没想到的不同方式

【问题讨论】:

  • 这取决于您使用的数据库。如果它支持 blob(二进制大对象)类型,您可以直接执行此操作,否则您可能需要使用 base64 之类的东西对数据进行编码,以确保它在通过数据库的过程中幸存下来。它绝对可以完成,但是如果你不能让它工作,请分享你尝试过的东西并提出问题。顺便说一句:不完全是您的问题,但相关:stackoverflow.com/questions/31849494/…
  • @Grismar 我告诉过你,我更喜欢使用 redis,但如果在 redis 中真的没有办法,sqlalchemy 可以做到。我还没有尝试任何东西,因为我不知道该怎么做,但我想将其转换为 base64 的选项可能会起作用
  • @Grismar 我也想知道是否有更简单的方法来做到这一点
  • Redis 是一种内存数据存储。使用如此专门的东西来做一些像将文件保存在内存中这样简单的事情似乎没有什么意义。为什么不将字节粘贴到字典中并从那里返回呢?如果您的目标不是将它们保存在内存中,那么您为什么要求使用 Redis?在这种情况下,为什么不直接将文件保存到磁盘,您希望从使用数据库中获得什么?

标签: python database flask redis sendfile


【解决方案1】:

我必须使用 base64 对数据进行编码,将其发送到数据库,然后对其进行解码并将文件作为二进制数据发送。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2011-02-28
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多