我有一个使用 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 工作表的单元格
最佳答案
- Get
JdbcBlob
fromJdbcResultSet
- Get
AppsScriptBlob
fromJdbcBlob
- Insert
AppsScriptBlob
to sheet as image
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/