Preguntas frecuentes de InterSystems
En el siguiente ejemplo, un archivo de imagen se codifica en una cadena Base64 en una propiedad de clase, se guarda, se decodifica la cadena en Base64 y se restaura en otro archivo.
【Classe ejemplo】
Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}
【Cuando se importa】
set x=##class(User.test).%New() // create a new object
// prepare an image
set file=##class(%File).%New("c:\temp\Mii.png")
do file.Open("RUK\BIN\")
for {
if file.AtEnd=1 quit
// Convert image to Base64 format in chunks of 1024 bytes
set cnt=file.Read(1024)
set b64=$system.Encryption.Base64Encode(cnt) // b64: 1402byte
do x.pics.Write(b64)
}
do x.%Save()
do file.Close()
【Cuando se exporta desde una propiedad】
// restore the file
set file2=##class(%FileBinaryStream).%New()
do file2.LinkToFile("C:\temp\xx.png")
// Read from the database the User.test object
set x=##class(User.test).%OpenId(1)
for {
if x.pics.AtEnd=1 quit
set b64=x.pics.Read(1402)
set cnt=$system.Encryption.Base64Decode(b64)
do file2.Write(cnt)
}
do file2.SaveStream()