unit ImageUploadBaaS_OP;<br>
<br>
interface<br>
<br>
uses<br>
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,<br>
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IPPeerClient,<br>
REST.Backend.ServiceTypes, REST.Backend.MetaTypes,<br>
REST.Backend.KinveyServices, System.JSON, REST.OpenSSL,<br>
REST.Backend.KinveyProvider, REST.Backend.Providers,<br>
REST.Backend.ServiceComponents, FMX.Objects, FMX.StdCtrls, FMX.Edit, REST.Client,<br>
FMX.TabControl, System.Actions, FMX.ActnList, FMX.StdActns,<br>
FMX.MediaLibrary.Actions, REST.Backend.ParseServices,<br>
REST.Backend.ParseProvider, FMX.ListBox, FMX.Layouts;<br>
<br>
type<br>
TForm1 = class(TForm)<br>
BackendFiles1: TBackendFiles;<br>
btnUploadImage: TButton;<br>
Image1: TImage;<br>
Image2: TImage;<br>
btnDownloadImage: TButton;<br>
Edit1: TEdit;<br>
ActionList1: TActionList;<br>
TakePhotoFromCameraAction1: TTakePhotoFromCameraAction;<br>
TakePhotoFromLibraryAction1: TTakePhotoFromLibraryAction;<br>
ParseProvider1: TParseProvider;<br>
ToolBar2: TToolBar;<br>
Label2: TLabel;<br>
ListBox1: TListBox;<br>
ListBoxGroupHeader1: TListBoxGroupHeader;<br>
ListBoxItem1: TListBoxItem;<br>
ListBoxItem2: TListBoxItem;<br>
imagedownload: TListBoxGroupHeader;<br>
ListBoxItem3: TListBoxItem;<br>
btnAccessGallery: TButton;<br>
procedure btnUploadImageClick(Sender: TObject);<br>
procedure btnDownloadImageClick(Sender: TObject);<br>
procedure TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap);<br>
procedure Image1Click(Sender: TObject);<br>
procedure Image2Click(Sender: TObject);<br>
private<br>
function SaveImage: TStream;<br>
procedure DownloadImage(const AUrl: string);<br>
{ Private declarations }<br>
public<br>
{ Public declarations }<br>
end;<br>
<br>
var<br>
Form1: TForm1;<br>
<br>
implementation<br>
<br>
{$R *.fmx}<br>
<br>
procedure TForm1.btnUploadImageClick(Sender: TObject);<br>
var<br>
LStream: TStream;<br>
LFile: TBackendEntityValue;<br>
begin<br>
LStream := SaveImage;<br>
try<br>
BackEndFiles1.Files.UploadFile('mypicture3.png',LStream, 'image/png',LFile);<br>
ShowMessage('Image has been uploaded');<br>
Edit1.Text := LFile.DownloadURL;<br>
finally<br>
LStream.Free;<br>
end;<br>
end;<br>
<br>
procedure TForm1.DownloadImage(const AUrl: string);<br>
var<br>
LStream: TMemoryStream;<br>
begin<br>
LStream := TMemoryStream.Create;<br>
try<br>
REST.Client.TDownloadURL.DownloadRawBytes(AUrl, LStream);<br>
Image2.Bitmap.LoadFromStream(LStream);<br>
finally<br>
LStream.Free;<br>
end;<br>
end;<br>
<br>
procedure TForm1.Image1Click(Sender: TObject);<br>
begin<br>
TakePhotoFromLibraryAction1.ExecuteTarget(btnAccessGallery);<br>
end;<br>
<br>
<br>
procedure TForm1.Image2Click(Sender: TObject);<br>
begin<br>
DownloadImage(Edit1.Text);<br>
end;<br>
<br>
procedure TForm1.btnDownloadImageClick(Sender: TObject);<br>
begin<br>
DownloadImage(Edit1.Text);<br>
end;<br>
<br>
function TForm1.SaveImage: TStream;<br>
begin<br>
Result := nil;<br>
begin<br>
Result := TMemoryStream.Create;<br>
try<br>
Image1.Bitmap.SaveToStream(Result);<br>
except<br>
Result.Free;<br>
raise;<br>
end;<br>
end;<br>
end;<br>
<br>
procedure TForm1.TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap);<br>
begin<br>
Image1.Bitmap.Assign(Image);<br>
end;<br>
<br>
end.
I’ve read your blog, it was very interesting. I’ve found very little about the ‘Bass Client’ components in Embarcadero. I’m using Delphi 11, and I’ve managed to upload files from a VCL application to Back4App, but I haven’t been able to manipulate the ACL for security purposes. Could you guide me on where to find the Delphi documentation for these components?
I think these articles may help:
https://github.com/JordiCorbilla/BaaSDelphiSamples
https://docwiki.embarcadero.com/Libraries/Athens/en/REST.Backend.KinveyProvider.TKinveyProvider