AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Delphi Indy Datei via URL downloaden und temporär öffnen?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von CG2003 · begonnen am 6. Jun 2019 · letzter Beitrag vom 3. Jul 2019
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

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

  Alt 7. Jun 2019, 10:18
Nimm doch Content-Type: text/html; charset=UTF-8.

Davon brauchst Du "text/html", das spendierst Du dann GetMIMEDefaultFileExt und die gesuchte Dateiendung sollte da rauskommen.
Ja, für HTML wäre e .html (früher .htm). Im Originalpost steht, dass in der URL kein Dateiname enthalten ist und der Dateityp sich ändern kann. Wenn Indy konstant text/hmtl erhält, kommt von GetMIMEDefaultFileExt dann immer nur .html.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Delphi.Narium

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

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

  Alt 7. Jun 2019, 10:31
Wir wissen aber nicht, ob Indy konstant text/hmtl erhält, sondern nur aus einem Beispiel, dass es bei diesem text/hmtl erhält.

Zuerst wäre also mal zu prüfen, ob Indy immer text/html enthält oder nur bei bestimmten Dokumenten.

Und wenn man sich mal hier von der Delphipraxis die Headerdaten anschaut, so bekommt man auch keinen Mime-Type, sondern "nur" den Content-Type von 'nem Apache-Server geliefert. Und der passt immer zum Typ der geladenen Daten, wie z. B.:
Code:
text/html; charset=iso-8859-1
text/css
application/javascript
image/png
image/gif
...
Der Apache arbeitet schon durchaus korrekt.

Jedenfalls entnehme ich den Dateityp seit gefühlten Jahrzehnten regelmäßig dem Content-Type und das klappte bisher immer, egal welcher Webserver auf der "Gegenseite" steht.

Der TE sollte also bitte erstmal prüfen, ob er immer nur text/html als Content-Type geliefert bekommt oder nur bei HTML.
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#3

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

  Alt 7. Jun 2019, 10:34
Hallo zusammen,

ich habe gerade mal nachgeschaut, ich bekomme immer text/html, egal welcher Dateityp dahinter steckt.
In meinem Header den ich oben gespostet habe, hatte ich versucht eine PDF Datei herunterzuladen.
Im Browser funktioniert alles einwandfrei, da kann ich eine Datei problemlos runterladen und sie wird auch mit korrektem Namen und Endung gespeichert.

Alles schon sehr merkwürdig.
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#4

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

  Alt 7. Jun 2019, 10:56
Um welche Dateitypen handelt es sich, kannst Du das einschränken auf z. B. nur HTML, PDF ... oder musst Du mit "kann alles sein, was es so gibt" rechnen?

Ist es eingeschränkt auf bestimmte Typen, kannst Du das selbst auswerten.

Du hast nach dem Get per Indy ja 'nen Stream.

Die ersten 4 Byte einer PDF sind immer "%PDF", das kann man einfach abfragen.

HTML beginnt mit <html, xml mit <xml ...

Es kommt also auf die "Menge der möglichen Dateitypen" an, ob es nicht einfacher ist das "eben mal" selbst zu prüfen.

Der FireFox hat 'ne Webkonsole, in der kann man sich die Headerdaten übersichtlich anschauen, kannst Du den bei Dir auch verwenden? Notfalls halt die Url, die Du Indy beim Get übergibst, mal per Copy&Paste dem Browser spendieren und den mal die Headerdaten anzeigen lassen.

Bei anderen Browsern müsstest Du mal schauen, ob sie 'ne ähnliche Option bieten.

Ansonsten:

https://elmar-eigner.de/_freetools/h...r-auslesen.php
https://www.gaijin.at/de/tools/webserver-spy

Schau bitte mal nach, welche Webseite den Mime-Type nicht in Content-Type liefert.

Literatur zur Definiton dessen, was im Header wie zu stehen hat: https://www.w3.org/Protocols/rfc2616....html#sec14.17
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#5

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

  Alt 7. Jun 2019, 10:57
ich habe gerade mal nachgeschaut, ich bekomme immer text/html, egal welcher Dateityp dahinter steckt.
In meinem Header den ich oben gespostet habe, hatte ich versucht eine PDF Datei herunterzuladen.
Im Browser funktioniert alles einwandfrei, da kann ich eine Datei problemlos runterladen und sie wird auch mit korrektem Namen und Endung gespeichert.
Ist JavaScript im Spiel? Testweise muss man dazu die URL im Browser nicht anklicken, sondern sie in einem neuen Fenster (oder sogar einem anderen Browser) direkt im Adressfeld eingeben. So kann man den GET Request einfach testen, ob er dann immer noch funktioniert.

Wenn es dann auch funkioniert, tippe ich stark auf ein Problem mit dem Indy Request. Das zu untersuchen ist aber auch möglich. Man muss dazu den HTTP Traffic des Browsers aufzeichnen. Über F12 (Entwicklermodus) kann man loggen, was im Detail an den CMS Server gesendet wird, und welcher MIME-Typ im Response Header zurückkommt. Hat man den funktionierenden Request, muss man diesen mit Indy nachbauen.

Wie sieht der Indy Request im HTTP Header aus? Eventuell fällt dort etwas auf.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#6

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

  Alt 7. Jun 2019, 11:04
Was auch noch sein könnte, dass im Browser zuerst 'ne HTML-Seite angefordert wird und dann per HTTP-Code 302 (o. ä.) eine Weiterleitung zur PDF erfolgt, die dann mit 'nem passenden Content-Type geliefert wird.

Wie ist die Indykomponete konfiguriert? Folgt sie Redirects? Wenn nein, das mal bitte ändern.
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#7

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

  Alt 17. Jun 2019, 16:37
Hallo zusammen,

danke für Eure Denkanstöße. Problem gelöst. Es lag an einer fehlerhaften Apache Konfiguration.

Eine Frage habe ich noch offen. Wenn ich jetzt mittels Indy Response Stream eine Datei herunterlade, kann ich diese irgendwie "nur" temporär herunterlacen, also nur solange auf der Platte belassen so lange sie geöffnet ist?
Evtl. beim Download und Speichern der Datei ein Windows-Flag "zu löschen" oder ähnliches zu setzen?
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#8

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

  Alt 17. Jun 2019, 17:01
Hallo,
Zitat:
so lange sie geöffnet ist
danach DeleteFile benutzen, oder habe ich das was ganz falsch verstanden?
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz