Árvore de páginas

Converte uma string (ou arquivo*) texto ou binária para uma nova string codificada segundo o padrão BASE64

Sintaxe

Encode64( [ cToConvert ], [ cFilePath* ], [ lZip* ], [ lChangeCase* ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cToConvert

caractere

Indica a string ASCII que será convertida para BASE64

 

 

cFilePath*

caractere

Caminho para arquivo que deve sera convertido para BASE64

 

 

lZip*

lógico

Se verdadeiro(.T.), irá compactar o conteúdo do arquivo antes de transformar em BASE64; caso contrário (.F.) não compacta o conteúdo do arquivo. Valor padrão (.F.)

 

 

lChangeCase*

lógico

Se verdadeiro (.T.), nomes de arquivos e pastas serão convertidos para letras minúsculas; caso contrário, falso (.F.), não será feito nenhum ajuste no nome do arquivo informado. Valor padrão (.T.). Veja maiores informações em Observações.

 

 

Retorno

Nome

Tipo

Descrição

cRet

caractere

Retorna a string codificada em BASE64.

Observações

Essa função formata o texto codificado, conforme as especificações RFC para base 64.
Para mais informações, acesse o endereço: http://www.faqs.org/rfcs/rfc1522.html.

Pelo menos um dos dois primeiros parâmetros deve ser informado. Ao informar o segundo parâmetro, o primeiro será ignorado.

Os parâmetros marcados com (*) só estão disponíveis para versões superiores a apenas nas versões 17.1.0.0 ou 17.2.1.0 ou superior.

Ao especificar lZip com .T. o conteúdo do arquivo será compactado no formato zip e será adicionado um cabeçalho:
"#zip" - assinatura fixa (4 bytes)
tamanho Original - 4 bytes para tamanho original do buffer.
tamanho Compactado - 4 bytes para o tamanho do buffer compactado.

O parâmetro opcional lChangeCase foi introduzido pois em sistemas LINUX/UNIX, existe a diferenciação entre maiúsculo e minúsculo em nomes de arquivos ou pastas. Quando este parâmetro for informado, terá prioridade sobre comportamento de Case Sensitive definido pelas chaves de ini CASESENSITIVE ou SERVERTYPE. Porem, quando não especificado o parâmetro, o valor padrão (.T.) fica condicionado ao que está configurado nessas chaves.

Informações adicionais

Exemplos

(Versão 13.1.3.x e 13.2.3.x)

#define CRLF Chr(13) + Chr(10)
#include "fileio.ch"
//+----------------------------------------------------------------------------+
//|Exemplo de uso da função Encode64 e Decode64                                |
//+----------------------------------------------------------------------------+
User Function Exemplo()
Local cTexto := ""
Local cEncode64 := ""
Local cDecode64 := ""
Local cMensagem := ""
Local cLeitura1 := ""
Local cLeitura2 := ""
cTexto := "à noite, vovô kowalsky vê o ímã cair no pé do pingüim "
cTexto += "queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz."
cEncode64 := Encode64(cTexto)
cDecode64 := Decode64(cEncode64)
cMensagem := "Pangrama origem: [" + cTexto + "]"
cMensagem += CRLF + "Texto -> Texto64: [" + cEncode64 + "]"
cMensagem += CRLF + "Texto64 -> Texto: [" + cDecode64 + "]"
MsgInfo(cMensagem, "Exemplo")
Return

(Versão 17.1.1.x e 17.2.1.x)

#define CRLF Chr(13) + Chr(10)
#include "fileio.ch"
//+----------------------------------------------------------------------------+
//|Exemplo de uso da função Encode64 e Decode64                                |
//+----------------------------------------------------------------------------+
User Function Exemplo()
Local cTexto := ""
Local cEncode64 := ""
Local cDecode64 := ""
Local cMensagem := ""
Local cLeitura1 := ""
Local cLeitura2 := ""
cTexto := "à noite, vovô kowalsky vê o ímã cair no pé do pingüim "
cTexto += "queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz."
cEncode64 := Encode64(cTexto)
cDecode64 := Decode64(cEncode64)
cMensagem := "Pangrama origem: [" + cTexto + "]"
cMensagem += CRLF + "Texto -> Texto64: [" + cEncode64 + "]"
cMensagem += CRLF + "Texto64 -> Texto: [" + cDecode64 + "]"
MsgInfo(cMensagem, "Exemplo")


// Leio o arquivo c:\temp\tst.jpg compactando e transformando em BASE64
cEncode64 := Encode64(,"c:\\temp\\tst.jpg",.T.,.F.)

// Faço o Decode do BASE64 direto para o arquivo tst_1.jpg (a descompactação já é tratada automaticamente)
cDecode64 := Decode64(cEncode64,"c:\\temp\\tst_1.jpg",.F.)

// Para testes/comparações. leio os dois arquivos
fHdl := fOpen("c:\\temp\\tst.jpg",FO_READ,,.F.)
if fHdl = -1
conout("Erro ao abrir arquivo.")
return
endif
nLen := fSeek(fHdl,0,FS_END)
fSeek(fhdl, 0)
fRead(fHdl, cLeitura1, nLen)
fClose(fHdl)

fHdl_1 := fOpen("c:\\temp\\tst_1.jpg",FO_READ,,.F.)
if fHdl_1 = -1
conout("Erro ao abrir arquivo.")
return
endif
nLen := fSeek(fHdl_1,0,FS_END)
fSeek(fhdl_1, 0)
fRead(fHdl_1, cLeitura2, nLen)
fClose(fHdl_1)

// Como foi um Encode64 e Decode64 os arquivos precisar ser iguais!
if (cLeitura1 == cLeitura2)
conout("Encode64/Decode64 realizado com sucesso")
endif

Return

Abrangência

Application Server 13.1.3.x e 13.2.3.x

Veja também

  • Sem rótulos