Função para Transformar um Arquivo em String Base 64

No artigo de hoje, vamos demonstrar uma função que criamos que já deixa o conteúdo do arquivo em Base64.

 

No passado, nós já demonstramos em como você pode enviar arquivos via WebService ( https://terminaldeinformacao.com/2021/12/08/como-transferir-arquivos-via-webservice-em-advpl/), transformando o conteúdo em uma string em Base64.

 

Acontece que, pensando em facilitar, transformamos isso em uma User Function, chamada de zFile64. Essa função basicamente funciona da seguinte maneira:

 

  1. Ela recebe o nome do arquivo
  2. Se o arquivo existir, irá instanciar um FWFileReader e usar o método FullRead
  3. Esse conteúdo será transformado em Base64 usando a função Encode64

 

Abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zFile64
Função que converte um arquivo para string em Base 64
@type  Function
@author Atilio
@since 03/11/2022
@param cArquivo, Caractere, Caminho absoluto do arquivo
@return cString64, Caractere, String em Base 64
@example
	u_zFile64("c:\teste\arquivo.pdf")
/*/

User Function zFile64(cArquivo)
	Local cConteudo := ""
	Local cString64 := ""
	Local oFile

	//Se o arquivo existir
	If File(cArquivo)

		//Tenta abrir o arquivo e pegar o conteudo
		oFile := FwFileReader():New(cArquivo)
		If oFile:Open()

			//Se deu certo abrir o arquivo, pega o conteudo e transforma em base 64
			cConteudo  := oFile:FullRead()
			cString64  := Encode64(cConteudo, , .F., .F.)
		EndIf
		oFile:Close()
	EndIf
Return cString64

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Israel Delgado Nicolau disse:

    Bom dia Muito boa a rotina simples e funcional me ajudou bastante aqui em uma integração….

Deixe uma resposta

Terminal de Informação