encoder une image et un fichier xml en base64
Bonjour,
Je tourne en rond depuis quelques jours. J'ai cette fonction pour l'encodage en base64. je travaille egalement avec openssl
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| char * base_64_encode(char *message, long length)
{
BIO *b64;
BIO *buffer;
char * b64_encoded_file;
int ret, size;
if(!(b64 = BIO_new(BIO_f_base64())))
{
//LOG_ERROR( "BIO cannot be created" );
return NULL;
}
if(!(buffer = BIO_new(BIO_s_mem())))
{
//LOG_ERROR( "BIO cannot be created" );
return NULL;
}
BIO_write(buffer,"\n",1);
BIO_flush(buffer);
BIO_push(b64,buffer);
ret = BIO_write(b64,message,length);
BIO_flush(b64);
if(ret<length)
{
//LOG_ERROR( "ERROR while encoding into b64" );
return NULL;
}
BIO_pop(b64);
ret = BIO_write(buffer,"\n",1);
ret = BIO_write(buffer,"\0",1);
BIO_flush(buffer);
if(ret<1)
{
//LOG_ERROR( "ERROR while encoding into b64" );
return NULL;
}
size = buffer->num_write;
b64_encoded_file = (char*)malloc(size*sizeof(char));
memset(b64_encoded_file,'\0',size);
ret = BIO_read(buffer,b64_encoded_file,size);
if(ret<size)
{
//LOG_ERROR( "ERROR while encoding into b64" );
return NULL;
}
BIO_free(b64);
BIO_free(buffer);
return b64_encoded_file;
} |
Maintenant je recupere mon image ou mon fichier xml sur disque que j'essaye de stocker dans mon buffer. Quand je verifie la taille du buffer elle est correcte mais impossible de recuperer correctement le contenu du buffer pour le passer en parametre à ma fonction d'encodage. Quand j'essaye de l'afficher j'ai des choses comme ca "Yà*^".
Quelqu'un à une idée.
Merci d'avance