Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.419 Beiträge
 
Delphi 7 Professional
 
#2

AW: Delphi Indy Datei via URL downloaden und temporär öffnen?

  Alt 6. Jun 2019, 15:15
Sowas?
Delphi-Quellcode:
var
  sl : TStringList;
  sUrl : String;
begin
  sl := TStringList.Create;
  sUrl := Format('%s/restapi/index.php/document/%s/content', [Host,String(lvSearch.Items.Item[i].Data)]);
  IdHTTP.Get(sUrl, Stream);
  Stream.Position := 0;
  sl.LoadFromStream(Stream);
  ShowMessage(sl.Text);
  sl.Free;
end;
Statt TStringList kannst Du auch alles andere nehmen, was über eine Methode LoadFromStream o. ä. verfügt. Das könnte z. B. ein TMemo sein. 'nen Dateinamen brauchst Du für sowas nicht.

Willst Du nur Infos über einen "demnächst" durchzuführenden Download, kannst Du auch eine Head-Abfrage machen.

Aus RawHeaders ('ner TStringList) kannst Du Dir dann die gewünschte Info raussuchen.

Dann wird aus Deiner Routine sowas in der Art:
Delphi-Quellcode:
var
  sl : TStringList;
  sUrl : String;
  sDatei : String;
begin
  sl := TStringList.Create;
  sUrl := Format('%s/restapi/index.php/document/%s/content', [Host,String(lvSearch.Items.Item[i].Data)]);
  IdHTTP.Head(sUrl);
  // Wenn das Laden des Inhaltes nicht direkt per Stream möglich sein sollte:
  sDatei := Format('%s\%s',[GetSpecialFolder(CSIDL_APPDATA),IdHTTP.Response.RawHeaders.Values['Filename']]); // oder wie das da im konkreten Einzelfall heißen mag.
  IdHTTP.Get(sUrl, Stream);
  Stream.SaveToFile(sDatei);
  sl.LoadFromFile(sDatei);
  ShowMessage(sl.Text);
  sl.Free;
  DeleteFile(sDatei);
end;
Ungetestet hingedaddelt.
  Mit Zitat antworten Zitat