使用谷歌应用程序脚本将图像文件存储为数据库中的blob



我正在使用谷歌云SQL作为数据库。。。。我正在通过UrlFetch获取图像内容,然后将FetchResponse转换为blob。。。。但当我试图从数据库中获取blob数据并试图将其作为图像上传时,它不起作用。。。。

Code : 
var base = 'https://www.google.com/m8/feeds/'; 
var fetchArgs = googleOAuth_('contacts', base);
fetchArgs.method='GET'
var photoURL==// url for image
var image=UrlFetchApp.fetch(photoURL,fetchArgs)
var imageBlob=image.getBlob()

imageBlob将存储在数据库中,其中PHOTO字段在数据库中具有LONgBLOB类型

现在我正在尝试获取照片

var conn  = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://"+instance_name+"/"+database_name);
var stmt=conn.createStatement()
var query="select PHOTO from user_info"
var rs=stmt.executeQuery(query)
rs.next()
var image=rs.getBlob(1)

现在使用这个blob到html文件中作为:

<html>
<body>
<center>
<p>This is image</p>
<img src="data:image/jpeg;base64,"+Base64.encode(image) width="100" height="100"/ >
<p> This is image</p>
</center>
</body>
</html>

它不显示任何图像,只是丢弃图像区域。。。。如果我做错了什么,请告诉我。。

实际代码:Web脚本:

function doGet() {
return HtmlService.createTemplateFromFile("image").evaluate();
}
function myFunction(){
var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://"+instance_name+"/"+database_name);
var stmt=conn.createStatement()
var query="select PHOTO from user_info"
var rs=stmt.executeQuery(query)
rs.next()
var image=rs.getBlob(1)
stmt.close()
conn.close()
return image
}

image.html

<html>
<body>
<center>
<p>This is image</p>
<img src="data:image/jpeg;base64,"+Base64.encode(<?= myFunction()?>) width="100" height="100"/ >
<p> This is image</p>
</center>
</body>
</html>

HTML文件有一些不一致的引用,您是否将其用作模板?此外,正确的base64编码函数是base64Encode。也许这也是一个问题?

<img src="data:image/jpeg;base64,<!=Utilities.base64Encode(image)?>" width="100" height="100"/ >

请确保将图像参数传递给要评估的模板。

完整版本应该看起来像-

<html>
<body>
<center>
<p>This is image</p>
<img src="data:image/jpeg;base64,<!=Utilities.base64Encode(myFunction()?>)" width="100" height="100"/ >
<p> This is image</p>
</center>
</body>
</html>

相关内容

  • 没有找到相关文章

最新更新