2010-08-11 4 views
0

J'ai un problème sur ce webservice:VB6 base64 binaire

http://credenciados.pronto.com.br/carga.asmx?op=IncluirMultimidia2

sur paramètre arrayArquivo, j'utiliser cette fonction pour générer des données:

Private Function getBase64fromFile(Filename) As String 

    Dim base64 As New cls64base 

    Dim FileInputData() As Byte 

    Open Filename For Binary As #1 
    FileInputData = String(LOF(1), 0) 
    Get #1, 1, FileInputData 
    Close #1 

    getBase64fromFile = base64.Base64Encode(FileInputData) 

End Function 

Quand j'appeler le service i recevez cette erreur:

Echec de la conversion de type pour l'élément arrayArquivo

: Obs

Im en utilisant:

  • Microsoft Soap ToolKit 3.0
  • Visual Basic 6
+0

Bien sûr, pour réduire les dépendances, on pourrait aussi envisager de faire un propre outil d'encodage/décodage, car les conversions en base64 ne sont pas vraiment une tâche exigeante: https://en.wikipedia.org/wiki/Base64 – Herb

Répondre

3

Je ne suis pas sûr de ce que ce problème est, mais je utilisez la paire de routines suivante pour obtenir des données binaires d'un fichier, puis base64 l'encoder. Le code requiert la bibliothèque MSXML - j'utilise la version 3, qui devrait être disponible pour toutes les versions de Win2K +.

Pour obtenir les données binaires à partir d'un fichier:

Public Function GetFileData(ByVal Filename As String) As Byte() 

    Dim f As Integer 

    f = FreeFile 

    Open Filename For Binary Access Read As #f 
    ReDim GetFileData(0 To LOF(f) - 1) 
    Get #f, , GetFileData 
    Close #f 

End Function 

Pour convertir le tableau d'octets en une chaîne de base64:

Public Function GetBase64String(ByRef data() As Byte) As String 

    Dim doc As DOMDocument 
    Dim root As IXMLDOMElement 

    Set doc = New DOMDocument 
    Set root = doc.createElement("encode") 
    root.dataType = "bin.base64" 
    root.nodeTypedValue = data 

    GetBase64String = root.Text 

Exit Function