2012-12-11 1 views
0

J'utilise google cloud SQL comme base de données .... Je vais récupérer le contenu de l'image via UrlFetch, puis en convertissant FetchResponse en blob .... Mais quand j'essaie d'obtenir données blob de base de données et d'essayer de télécharger l'image que cela ne fonctionne pas ....Stockez le fichier image comme blob dans la base de données en utilisant google apps script

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 seront stockés dans la base de données où le champ pHOTO a le type de LONGBLOB dans la base

maintenant je suis en train de aller chercher la photo

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) 

Maintenant, en utilisant ce blob dans le fichier html comme:

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

Il n'affiche une image, il dislpys juste zone d'image .... S'il vous plaît laissez-moi savoir si je fais quelque chose de mal ..

Code actuel: script 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> 

Répondre

0

Le fichier HTML a une citation incohérente, l'utilisez-vous comme template? En outre, la fonction de codage base64 correcte est base64Encode. Peut-être que c'est aussi un problème?

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

Assurez-vous que vous passez dans le paramètre d'image au modèle pour évaluer.

La version complète devrait ressembler -

<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> 
+0

oui je en utilisant le fichier html comme modèle ... en fait je suis en utilisant un script web qui montre la sortie du fichier html ... Dans le fichier html, pour le paramètre image I suis l'appel de la fonction de script qui renvoie des données blob ..... vous avez écrit la fonction Utilities.base64Encode (image) dans le fichier html, mais cette fonction est disponible pour le script Apps seulement .... Est-ce bon? – Rishi

+0

J'ai mis à jour mon code réel au-dessus duquel j'utilise ..... – Rishi

+0

Utilisez-vous une autre bibliothèque base64 alors? Même alors le '' 'semble au mauvais endroit, il devrait après le'?> '. J'ai mis à jour mon exemple pour inclure également un exemple complet de HTML Essayez cela et faites-nous savoir ce que vous voyez –

Questions connexes