4

我想在数据库而不是 URL 上使用图像存储。

在我的服务器端,我使用 PostgreSQL,我在这里读到“bytea”是用于存储文件的建议格式。

在我的移动应用程序方面,数据库是 SQLite。似乎数据存储建议格式有“BLOB” ,如此处所述

我想知道,到目前为止我还没有清楚地发现,是否有任何从 PostgreSQL 的“bytea”到 SQLite 的“BLOB”的转换?

4

1 回答 1

4

两者byteaBLOB都是数据库中用于存储原始二进制数据的数据类型。它们不是编码,如 base64 等,因此本身不需要进行转换。

但是,实际上您的应用程序将至少以 5 种形式处理这些数据:

  • 一个 PostgreSQLbytea
  • 服务器端应用程序中的变量(可能是字符串或字节数组)
  • API 中的数据流,将您的服务器链接到您的客户端(可能以某种 ASCII 安全格式编码,例如 base64)
  • 客户端移动应用程序中的变量
  • 一个 SQLiteBLOB

数据将依次流经这些形式中的每一种,因此您需要担心的转换不是 PostgreSQL 到 SQLite,而是 PostgreSQL 到/从服务器端语言、服务器端语言到/从 API 编码等等。如果您将服务器更改为使用 MySQL,或者将数据存储在单独的文件中,或者找到一种即时创建它的方法,则您不需要对您的移动应用程序进行任何更改;该过程的两端是完全分开的。

这将与使用正确的函数一样明确地理解编码,就像将文件存储到磁盘可能涉及操作数据的程序环境一样,但您只需编写file.put(data)或其他任何东西。

于 2017-02-07T12:10:07.997 回答