No vídeo de hoje, vamos demonstrar em como baixar arquivos em uma string Base64 (vindos principalmente em WebServices).
A dúvida de hoje foi feita pelo grande Antonio, sendo que ele perguntou qual seria a forma de baixar um arquivo através de uma string em Base64.
A partir disso foi montado esse exemplo, demonstrando em como transformar arquivos através de strings com Base64.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zVid0067
Exemplo que mostra como transformar arquivo em string base 64 e vice e versa
@type Function
@author Atilio
@since 10/09/2022
/*/
User Function zVid0067()
Local cTexto := ""
//Primeiro exemplo, pegar um arquivo que existe em PDF e transformar em Base 64
cTexto := fPdfTo64()
//Segundo exemplo, pegar uma string base 64 e transformar em PDF
f64toPdf(cTexto)
Return
Static Function fPdfTo64()
Local cArquivo := "C:\spool\zrelprod.pdf"
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.)
FWAlertSuccess("Arquivo pdf transformado em string com base 64", "Arquivo em Base 64")
EndIf
oFile:Close()
EndIf
Return cString64
Static Function f64toPdf(cString64)
Local cDecode := ""
Local cPasta := GetTempPath()
Local cArquivo := "prod_base64_" + dToS(Date()) + "_" + StrTran(Time(), ":", "-") + ".pdf"
Default cString64 := ""
//Se houver string
If ! Empty(cString64)
//Decodifica o conteudo e salva na temporária
cDecode := Decode64(cString64)
MemoWrite(cPasta + cArquivo, cDecode)
//Agora abre o arquivo
ShellExecute("open", cArquivo, "", cPasta, 1)
EndIf
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.