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

时间:2012-12-11 05:39:09

标签: google-apps-script google-cloud-sql

我使用谷歌云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>

1 个答案:

答案 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>