Estimado, estoy probando Delphi XE5, con una aplicación para Android y un servidor DataSnap.
Lo que necesito es insertar un registro en una base de Dato Firebird 2.5, en un campo tipo BLOB (size 16384, type Text), desde un cliente con el procedimiento insert_imagen (servidor DataSnap).
La imagen está previamente cargada y visualizada en un TImage, llamado imgCameraPicture.
Código Delphi
[-]
procedure TServerMethods1.insert_imagen(imagen: TStream; usuario: integer);
begin
with ibsql1 do
begin
transaction.Active := true;;
close;
sql.clear;
sql.add('insert into imagenes (usuario, imagen, fecha)');
sql.add('values (:usuario, :imagen, current_timestamp)');
ParamByName('imagen').LoadFromStream(imagen);
ParamByName('usuario').asinteger :=usuario;
execquery;
transaction.CommitRetaining;
end;
end;
Y desde el cliente llamo al procedimiento como sigue.
Código Delphi
[-]
var
myServer : TServerMethods1Client;
stream : TStream;
begin
if SQLConnection1.Connected then
begin
myServer := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
stream := TMemoryStream.Create;
try
imgCameraPicture.MultiResBitmap[0].bitmap.savetostream(stream);
myServer.insert_imagen(stream, 10);
finally
stream.Free;
myServer.Free;
end;
end;
end;
con todo esto logro insertar el registro en la base de dato, pero el campo imagen está en blanco. que podrá ser ??