Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.0.0+

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

Delphi ActiveX
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: