Delphi ActiveX Requires Chilkat v11.0.0+
Delphi ActiveX
SharePoint Get Files in Root Folder
See more SharePoint Examples
Gets the list of files that exist in the root folder.Chilkat Delphi ActiveX Downloads
var
success: Integer;
http: TChilkatHttp;
jsonOAuthCC: TChilkatJsonObject;
sbJson: TChilkatStringBuilder;
json: TChilkatJsonObject;
numFiles: Integer;
i: Integer;
filename: WideString;
fileRelativeUri: WideString;
fileSize: Integer;
begin
success := 0;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := TChilkatHttp.Create(Self);
// --------------------------------------------------------------------------------------------------------
// Provide the information needed for Chilkat to automatically fetch the OAuth2.0 access token as needed.
// To create your App Registration for SharePoint in Azure Entra ID,
// see How to Create SharePoint App Registration for OAuth 2.0 Client Credentials
jsonOAuthCC := TChilkatJsonObject.Create(Self);
jsonOAuthCC.UpdateString('client_id','CLIENT_ID');
jsonOAuthCC.UpdateString('client_secret','SECRET_VALUE');
jsonOAuthCC.UpdateString('scope','https://graph.microsoft.com/.default');
jsonOAuthCC.UpdateString('token_endpoint','https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token');
http.AuthToken := jsonOAuthCC.Emit();
// --------------------------------------------------------------------------------------------------------
// Indicate that we want a JSON reply
http.Accept := 'application/json;odata=verbose';
http.SetUrlVar('sharepoint_hostname','example.sharepoint.com');
sbJson := TChilkatStringBuilder.Create(Self);
success := http.QuickGetSb('https://graph.microsoft.com/v1.0/sites/SITE_ID/drive/root/children',sbJson.ControlInterface);
if (success = 0) then
begin
Memo1.Lines.Add(http.LastErrorText);
Exit;
end;
json := TChilkatJsonObject.Create(Self);
json.LoadSb(sbJson.ControlInterface);
// Iterate over the results and get each file's name, size, and last-modified date/time.
numFiles := json.SizeOfArray('d.results');
Memo1.Lines.Add('Number of Files in the SharePoint root folder = ' + IntToStr(numFiles));
i := 0;
while i < numFiles do
begin
json.I := i;
filename := json.StringOf('d.results[i].Name');
fileRelativeUri := json.StringOf('d.results[i].ServerRelativeUrl');
fileSize := json.IntOf('d.results[i].Length');
Memo1.Lines.Add(IntToStr(i + 1) + ': ' + filename);
Memo1.Lines.Add(' Relative URI: ' + fileRelativeUri);
Memo1.Lines.Add(' Size in Bytes: ' + IntToStr(fileSize));
i := i + 1;
end;
// The output of this program when I tested it: