Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2024
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 55
Poder: 6
dani36652 Va camino a la fama
Lightbulb Archivo a Base64 y viceversa probado en Android y Windows

Hola a todos compañeros del foro.
Les comparto las siguientes funciones para que las utilicen como mejor les convenga.

Código Delphi [-]
function FileToBase64(aFilePath: string): string;
var
  FileStream: TFileStream;
  Encoding: TNetEncoding;
  Buffer: TBytes;
begin
  {
    Función que convierte cualquier archivo a Base64
    pidiendo su ruta como parámetro
  }
  FileStream := TFileStream.Create(aFilePath, fmOpenRead);
  Encoding := TNetEncoding.Base64;
  try
    try
      SetLength(Buffer, FileStream.Size);
      FileStream.ReadBuffer(Buffer[0], FileStream.Size);
      Result := Encoding.EncodeBytesToString(Buffer);
    except
      Result:= string.Empty;
    end;
  finally
    FreeAndNil(FileStream);
    SetLength(Buffer, 0); //Liberar en memoria (importante)
  end;
end;


Código Delphi [-]
function Base64ToFile(Base64String, FilePath: string): boolean;
var
  Encoding: TNetEncoding;
  DecodedBytes: TBytes;
  FileStream: TFileStream;
begin
  {
    Función que convierte un Base64 a un archivo
    pidiendo el string en Base64 y la ruta completa del archivo
    por ejemplo C://users/Dani/Desktop/miArchivo.jpg
  }
  FileStream := TFileStream.Create(FilePath, fmCreate);
  Encoding := TNetEncoding.Base64;
  try
    try
      DecodedBytes := Encoding.DecodeStringToBytes(Base64String);
      FileStream.WriteBuffer(DecodedBytes[0], Length(DecodedBytes));
      Result:= True;
    except on E: exception do
      begin
        Result:= False;
      end;
    end;
  finally
    FreeAndNil(FileStream);
    SetLength(DecodedBytes, 0);
  end;
end;


Código Delphi [-]
function Base64ToMemoryStream(Base64String: string): TMemoryStream;
var
  Encoding: TNetEncoding;
  DecodedBytes: TBytes;
  FileStream: TFileStream;
begin
  {
    Esta función convierte una cadena en Base64 a un
    TMemoryStream
  }
  Encoding:= TNetEncoding.Base64;
  try
    try
      DecodedBytes:= Encoding.DecodeStringToBytes(Base64String);
      Result:= TMemoryStream.Create;
      Result.WriteBuffer(DecodedBytes[0], Length(DecodedBytes));
    except
      Result:= nil;
    end;
  finally
    SetLength(DecodedBytes, 0);
  end;
end;


Estas funciones podrían ser de utilidad por ejemplo para enviar archivos mediante aplicaciones Cliente-Servidor, un WS para registro de usuarios con fotos, etc.
El código fue escrito en Delphi 11.3 y probado en Android 13 y Windows 10.
Las unidades que deberán agregar al uses son:
System.NetEncoding y System.IOUtils;

Saludos.
Responder Con Cita
  #2  
Antiguo 14-03-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #3  
Antiguo 18-03-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Muchas gracias.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Android a Windows pruz Desarrollo en Delphi para Android 8 31-03-2023 19:07:28
Descargar un archivo de Internet en android dani36652 Desarrollo en Delphi para Android 2 19-02-2020 19:02:18
¿Cómo enviar un archivo con TServerSocket/TClientSocket y viceversa? K04VH4CK Internet 4 06-07-2017 10:36:26
¿Quién ha probado Delphi 2009? JXJ La Taberna 14 24-01-2011 09:51:05
Ya he probado el delphi para PHP ! Julián PHP 56 20-09-2007 23:14:36


La franja horaria es GMT +2. Ahora son las 07:39:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi