我使用谷歌云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>
它没有显示任何图像,它只是显示图像区域....请告诉我,如果我做错了什么..
实际代码: 网页脚本:
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>
答案 0 :(得分:0)
HTML文件有一些不一致的引用,您是否将其用作template?此外,正确的base64编码函数是base64Encode。也许这也是一个问题?
<img src="data:image/jpeg;base64,<!=Utilities.base64Encode(image)?>" width="100" height="100"/ >
确保将image参数传递给要评估的模板。
完整版应该看起来像 -
<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>