Brauchen Sie Hilfe

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
HenryScott
Beiträge: 1
Registriert: Di 4. Jul 2023, 05:29

Brauchen Sie Hilfe

Beitrag von HenryScott »

Ich stehe vor der Aufgabe, eine oder mehrere PDF-Dateien mithilfe eines Lazarus-Programms auf einen NextCloud-Server hochzuladen. Leider sind meine Kenntnisse über die WebDAV-API von NextCloud recht begrenzt. Gibt es jemanden, der in dieser Angelegenheit Hilfe oder Rat geben könnte? Wir würden uns sehr über Ihre Hilfe freuen.

Joh
Lazarusforum e. V.
Beiträge: 191
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: Brauchen Sie Hilfe

Beitrag von Joh »

via "net use" oder Netzwerklaufwek verbinden im Explorer sollte sich dein WebDav-Server einrichten lassen.
Der Rest ist copy...

--
just my 2 beer
just my two Beer

paweld
Beiträge: 10
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Brauchen Sie Hilfe

Beitrag von paweld »

Wenn Sie sich nur mit einem Login und einem Passwort anmelden (keine 2FA), können Sie wie folgt vorgehen:

Code: Alles auswählen

uses
  fphttpclient, opensslsockets,
  base64;

procedure TForm1.Button1Click(Sender: TObject);
const
  url = 'https://nextcloud.url/remote.php/dav/files/username';
  folder = 'Publiczny';
  login = 'login';
  pass = 'password';
var
  hc: TFPHttpClient;
begin
  if not OpenDialog1.Execute then
    exit;
  hc := TFPHttpClient.Create(nil);
  hc.AllowRedirect := True;
  hc.RequestHeaders.Insert(0, 'Authorization: Basic ' + EncodeStringBase64(login + ':' + pass));
  hc.RequestBody := TFileStream.Create(OpenDialog1.FileName, fmOpenRead); //load file as requestbody
  hc.Put(url + '/' + folder + '/' + ExtractFileName(OpenDialog1.FileName));
  if hc.ResponseStatusCode div 100 = 2 then
    ShowMessage(Format('File [%s] uploaded to WebDAV', [ExtractFileName(OpenDialog1.FileName)]))
  else
    ShowMessage(Format('Upload error: [%d] %s', [hc.ResponseStatusCode, hc.ResponseStatusText]));
  hc.RequestBody.Free;
  hc.Free;
end;          
Grüße / Pozdrawiam
paweld

Antworten