mysql - 如何将图像以 blob 格式存储到我的 mysql 数据库中?

标签 mysql google-apps-script jdbc google-sheets blob

我有一个使用 Google 脚本连接到我的 MySQL 数据库的 Google 工作表。 我能够检索我想要的所有文本数据,而不是存储在数据库中的 blob。 这是 PHP 代码:

$insert = $conn->query("INSERT into images (image) VALUES ('$base64Img')");

为了清楚起见,我只留下了一个字段

表中的 blob 列设置为“LONGBLOB”。 如何在 Google 工作表中以图像形式查看 BLOB?

这是我尝试过的:

function readFromTable() {
  var conn = Jdbc.getConnection(url, username, password);
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT image FROM images');
  var numCols = results.getMetaData().getColumnCount();
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName('Sheet1');
  var arr=[];
  while (results.next()) {
    var arr = [];
    for (var col = 0; col < numCols; col++) {
      arr.push(results.getBlob(col + 1));
    }
    sheet.appendRow(arr);
  }

  results.close();
  stmt.close();
}

我没有收到任何错误消息,但在我的工作表上它打印:单元格中的 JdbcBlob 而不是实际图像。 我想将图像放入我的 Google 工作表的单元格

最佳答案

const jdbcBlob = results.getBlob(col + 1);
const appsScriptBlob = jdbcBlob.getAppsScriptBlob();
sheet.insertImage(appsScriptBlob,1,1);

//if  image data is base64 encoded:
sheet.insertImage(Utilities.newBlob(Utilities.base64Decode(appsScriptBlob.getDataAsString())),1,1)

另一种方法是使用 getBytes() 获取字节数组:

const byteArr = results.getBytes(col + 1);
//if  image data is base64 encoded:
sheet.insertImage(Utilities.newBlob(Utilities.base64Decode(Utilities.newBlob(byteArr).getDataAsString())),1,1)

关于mysql - 如何将图像以 blob 格式存储到我的 mysql 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63264462/

相关文章:

javascript - 如何返回列值?

google-apps-script - 适用于多个用户的 Google Script OAuth

jakarta-ee - 如何高效地实现连接池?

Mysql 尝试加载已卸载的插件

php - 如何在 codeigniter 事件记录中选择 MONTH() 和 YEAR()

javascript - 使用 Google Apps 脚本制作已附加脚本的 Google 表单

java - SQLNonTransientConnectionException

php - 如何计算包括当天在内的小时差

MySQL UTF8 varchar 列大小

java - JDBC MySQL 存储过程抛出异常 "Parameter number 2 is not an OUT parameter"?