【问题标题】:Write byte array to MySQL database from Java as image or file从 Java 将字节数组作为图像或文件写入 MySQL 数据库
【发布时间】:2013-07-14 09:57:16
【问题描述】:

我想将文件保存到我的 MySQL 数据库中。

  1. 我可以从文件中获取字节数组并将其存储在数据库中吗?或者有没有其他方法可以直接将文件保存在 MySQL 数据库中?

  2. 我应该使用什么字段类型将字节数组保存到mysql,请给我一个如何插入字节数组的示例查询

【问题讨论】:

标签: java mysql file byte bytearray


【解决方案1】:

1) 是的。使用FileInputStream.read(byte[]) 将文件读入byte[]。由于图像由二进制数据组成,因此请使用byte[](而不是字符串)。

2) 数据库中的字段应该是blob,这对于byte[] 来说是完美的。您可以使用PreparedStatement 插入它:

PreparedStatement stmt = connection.generatePreparedStatement("INSERT INTO ... ");
stmt.setBytes(1, yourByteArray);

【讨论】:

    【解决方案2】:

    我认为您正在寻找二进制大对象 (BLOB)。这应该允许您将字节流保存到数据库中。 This 示例应该为您指明在 MySQL 和 Java 中使用 BLOB 的正确方向。

    话虽如此,人们通常不建议将整个文件存储到您的数据库中,通常建议将文件存储在您的文件系统中,并将 URI 存储在您的数据库中。您可以查看this 以前的 SO 帖子,了解何时应该使用 BLOB。

    【讨论】:

      【解决方案3】:

      您可以为此在 MySQL 中使用 varbinary 数据类型。它与 Java 中的 byte[] 类型匹配。

      【讨论】:

        猜你喜欢
        • 2019-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-09
        • 2015-09-04
        • 2013-03-07
        • 2014-04-10
        • 1970-01-01
        相关资源
        最近更新 更多