【问题标题】:NodeJS - How to insert a blob image in MySQLNodeJS - 如何在 MySQL 中插入 blob 图像
【发布时间】:2021-05-21 23:31:23
【问题描述】:

我有一个表示图片的十六进制代码或 int8 的 int 列表,我需要将其作为 Blob 插入 MySQL。我在 API 中使用 NodeJS Express 服务器来执行此操作。我用的是节点包node-mysql2,我的NodeJS版本是NodeJS 12。

所以我的 API 收到了这个:[137,80,78,71,13,10,26,10,0,0,0,...96,130]

我想将它作为 Blob 插入 MYSQL(这是一张图片)。请问我该怎么做?我没有找到任何东西...我做了很多 StackOverflow 主题和 Google 页面,但我没有找到。

提前感谢您的帮助!

【问题讨论】:

  • 每个数字代表一个字节,因此将所有数字转换为一个字节数组
  • 把这个东西剪到合适的尺寸。我们不需要滚动浏览所有这些随机的垃圾。向我们展示你尝试了什么,而不是任何东西。
  • A) 你为什么不接收这个二进制数据,或者至少是 base64 编码的?这种编码是完全荒谬的。 B) 为什么要将其保存在数据库中?这是图像应该在的最后一个位置。
  • @tadman 哦...对不起...我不知道。我是初学者,正在学习,所以我无法真正回答您的问题。对于 A),我从其他开发人员创建的应用程序中收到此信息。我无权访问此应用程序的代码。对于B,我不知道,这是我的首席开发人员选择这样存储它。
  • @tadman 好的,谢谢!我会继续寻找Buffer 所以。我会尽力按照你说的去做。感谢您的帮助!

标签: mysql node.js express node-mysql2


【解决方案1】:

答案是:不要那样做!您应该存储对 blob 存储条目的引用,您可以在其中保存 blob 数据。

【讨论】:

    【解决方案2】:

    假设这个数据是有效的,你应该可以很容易地将它转换回来:

    let img = Buffer.from(JSON.parse(input));
    

    input 是您图像的奇怪表示,巧合的是,它可能是有效的 JSON。

    【讨论】:

    • 嗯,非常感谢您的帮助。但它没有奏效。我之前已经尝试过这样的事情,但我再次尝试了你的回答来确定。但这不起作用,我仍然在 MySQL 中看到我的文件,就像它已损坏一样。但我确信这是一个完整且有效的文件,因为我自己从应用程序中拍摄了照片(我在我公司的开发手机中使用了应用程序的构建)。也许我明天应该问我的首席开发人员为什么我们将它放入数据库以及他认为如何处理这个......
    • A) 保存在磁盘上时是否正确解码? B) 你能把一个已知良好的文件放入 MySQL 并取回它吗? C)你是如何插入的?您是否使用占位符值?
    • A) 嗯……我试着写了,然后……不,它打不开。所以看起来应用程序中存在问题,也许其他开发人员在发送到我的 API 之前以错误的方式操作图片。明天和他一起工作看看。无论如何感谢您的帮助!并为您浪费的时间感到抱歉。不管怎样,你对我说的话让我学到了很多。
    • B) 是的,效果很好。但是,我直接从 PHPMyAdmin 插入它,所以我认为文件的处理方式不同。 C) 我用一个简单的 SQL 查询插入,我不使用占位符
    • 好的,明白了!我现在就去做:)
    猜你喜欢
    • 2014-11-15
    • 2015-11-03
    • 2021-02-17
    • 2012-11-08
    • 2022-01-04
    • 2018-05-24
    • 2018-06-08
    相关资源
    最近更新 更多