2008-10-09 4 views
0

Ce que j'essaie de faire est d'encoder un fichier gif, à inclure dans un document XML. C'est ce que j'ai maintenant, mais cela ne semble pas fonctionner.Puis-je utiliser VBScript pour encoder en base64 un gif?

Function gifToBase64(strGifFilename) 
On Error Resume Next 
Dim strBase64 
Set inputStream = WScript.CreateObject("ADODB.Stream") 
inputStream.LoadFromFile strGifFilename 
strBase64 = inputStream.Text 
Set inputStream = Nothing 
gifToBase64 = strBase64 
End Function 

Répondre

1

Jetez un coup d'oeil ici: Base64 Encode & Decode Files with VBScript. Cet exemple s'appuie sur le XBase64 component gratuit et fournit simplement un wrapper pour la gestion de fichiers.

Vous pouvez également opter pour un pure VBScript implementation, mais ici, vous devez prendre soin de la gestion du fichier vous-même. Ne devrait pas être trop difficile, mais la performance d'encodage ne sera pas aussi bonne. Pour quelques petits fichiers d'image, cela suffira cependant.

Google augmentera plus.

+0

Cela semble bien, mais je ne suis pas en mesure d'utiliser soit en raison de la dépendance sur les DLL externes. Ce que je cherche, c'est de tout faire en vbscript. L'implémentation VBScript pure repose sur un ScptUtl.dll. –

+0

Non, ce n'est pas le cas. :-) J'ai mis à jour le deuxième lien un peu. – Tomalak

+0

Ah, ça marche, je n'ai pas vu ce lien sur la page. Merci Tomalak. –

1

Dans votre commentaire sur Tomalak, vous déclarez que vous ne souhaitez pas utiliser de DLL externes, mais dans votre tentative d'exemple, vous essayez d'utiliser ADODB. Je suppose donc que ce que vous voulez dire, c'est que vous ne voulez pas installer des DLL qui ne sont pas nativement présentes sur une plateforme windows de vanilia.

Si tel est le cas alors MSXML peut être votre réponse: -

Function Base64Encode(rabyt) 

    Dim dom: Set dom = CreateObject("MSXML2.DOMDocument.3.0") 
    Dim elem: Set elem = dom.appendChild(dom.createElement("root")) 
    elem.dataType = "bin.base64" 
    elem.nodeTypedValue = rabyt 

    Base64Encode = elem.Text 

End Function 
3

J'ai écrit récemment un article sur ce même sujet pour les implémentations dans JScript et VBScript. Voici la solution que j'ai pour VBScript:

Public Function convertImageToBase64(filePath) 
  Dim inputStream 
  Set inputStream = CreateObject("ADODB.Stream") 
  inputStream.Open 
  inputStream.Type = 1  ' adTypeBinary 
  inputStream.LoadFromFile filePath 
  Dim bytes: bytes = inputStream.Read 
  Dim dom: Set dom = CreateObject("Microsoft.XMLDOM") 
  Dim elem: Set elem = dom.createElement("tmp") 
  elem.dataType = "bin.base64" 
  elem.nodeTypedValue = bytes 
  convertImageToBase64 = "data:image/png;base64," & Replace(elem.text, vbLf, "") 
End Function 
+0

Génial ... J'ai cherché cette fonction pendant longtemps ... :) – yaqoob

Questions connexes