Seite 1 von 1

Timestamp übertragende Dateien [Erledigt]

Verfasst: Do, 31. Okt 2019 10:12
von Jan
Moin,

mit HttpClient() kann ich per :getFile() Dateien herunter laden. Leider bekommen die dann den Timestamp des Herunterlade-Zeitpunkets. Kann man sowas irgendwie verhindern?

Jan

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 11:22
von Werner_Bayern
Servus Jan,

per FtpClient():Directory() kommst an die korrekten Infos. Da gibt's auch das :getFile(). Was Du anschließend mit Erstell- und Änderungsdatum und Zeit machst, liegt an Dir.

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 11:38
von Tom
Dafür braucht's aber einen FTP-Server, Werner.

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 12:53
von ramses
Hallo Jan

das ist etwas was du selbst bauen musst. Schau dir die Antwort des Clients an. Meistens sendet der Server im Header der Antwort das änderung-Datum leider wird das Datum nicht immer übertragen. Wenn dein Server das Datum mitsendet kannst du den Header Auswerten und das Datum entsprechend selbst setzten.

Der Header sieht etwa so aus:

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 18:57
von Werner_Bayern
Tom hat geschrieben: Do, 31. Okt 2019 11:38 Dafür braucht's aber einen FTP-Server, Werner.
Auch wieder wahr. Vielleicht hat Jan ja die Alternative.

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 19:04
von Jan
Hallo,

Danke für die vielen Ideen und Vorschläge.

FTP geht leider hier nicht.

Wie baue ich in eine exe oder dll denn von Xbase++ aus den gewünschten Timestamp ein?

Jan

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 19:29
von Tom
Was willst Du machen? Datum und Uhrzeit der empfangenen Datei ändern?

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 19:39
von Jan
Tom,

mit geht es ja ansich darum, daß die übertragungenen Dateien den gleichen TImestamp tragen wie das Original. Am Liebsten wre mir dabei, wenn der Timestamp gar nicht erst geändert werden würde bei der Übertragung. Wenn das nicht geht würde ich den gerne wieder auf das Original zurück setzen.

Jan

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 20:05
von ramses
Hallo Jan

wenn du den HttpClient() anweissen tust das Ergebnis in einem File zu speichern bekommt das File logischerweise das aktuelle Datum.
Am Liebsten wre mir dabei, wenn der Timestamp gar nicht erst geändert werden würde bei der Übertragung.
Das ist aufgrund des HTTP Protokolls und der Übertragungsweise gar nicht möglich. Das File wird als Stream übertragen. Das Dateidatum ist nicht ind zwingend.


Über das Object des HTTPClients hast du Zugriff auf den Header der Antwort des Servers aus welchem du das "last-modified" Datum extrahieren kannst und damit selbst das Datum und Zeit der Datei anpassen kannst.

Das sind einige Zeilen Code, und funktioniert sehr gut.

Hast du mein Beitrag weiter oben nicht gesehen?

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 20:10
von Jan
Carlo,

habe ich natürlich. Das Problem ist aber nicht festzustellen, was der original Timestamp ist. Sondern der übertragenen Datei das einzupflanzen. Und da weiß ich nicht wie ich das per Xbase++ hinbekommen kann.

Jan

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 20:13
von ramses
Jan

du meinst sicher das Datum und Uhrzeit wie es im Explorer sichtbar ist?

Re: Timestamp übertragende Dateien

Verfasst: Do, 31. Okt 2019 20:27
von Jan
Hallo Carlo,

oops. Die Funktion kannte ich noch nicht. Danke für den Hinweis.

Jan

Re: Timestamp übertragende Dateien [Erledigt]

Verfasst: Do, 31. Okt 2019 21:07
von ramses
Hallo Jan

wenn du diese Funktion nicht verwenden willst weil Sie aus den Tools ist dann hätte ich noch Xbase Code der Zeit und Datum mit dllcall's und Funktionen der kernel32.dll erledigt.

Re: Timestamp übertragende Dateien [Erledigt]

Verfasst: Do, 31. Okt 2019 22:04
von Jan
Carlo,

das wäre nett. Sonst müßte ich alleine wegen dieser Funktion die xbtbase1.dl mit ausliefern. Wäre nicht das ganz große Problem, aber ohne halt doch etwas schlanker.

Jan

Re: Timestamp übertragende Dateien [Erledigt]

Verfasst: Fr, 01. Nov 2019 7:50
von ramses
Jan

siehe PN

Re: Timestamp übertragende Dateien [Erledigt]

Verfasst: Fr, 01. Nov 2019 12:43
von Jan
Moin,

für diejenigen, die etwas ähnliches brauchen: Wie Carlo schrieb braucht man dazu ja irgendwie den Timestamp, um den überhaupt setzen zu können.

Das ist recht einfach:

Code: Alles auswählen

// Datei herunter laden und speichern
oHc := HttpClient():new(url + Dateiname)
oHc:getFile(lokaler Speicherort + Dateiname)   
oHc:send()
// Timestamp auslesen
cTimestamp := oHc:httpresponse:getHeader("Last-Modified")      ==> z. B. {"Thu, 31 Oct 2019 17:43:23 GMT"}
Jan

Re: Timestamp übertragende Dateien [Erledigt]

Verfasst: Fr, 01. Nov 2019 19:03
von brandelh
um das sicher zu machen, solltest du nicht die original Datei sondern ein ZIP Archiv mit dieser Datei senden.
Beim Entpacken wird der original Zeit-/Datumswert gesetzt und eine Prüfung der korrekten Übertragung wird indirekt auch geliefert.

Re: Timestamp übertragende Dateien [Erledigt]

Verfasst: Fr, 01. Nov 2019 19:07
von Jan
Hubert,

Du sprichst in Rätseln.

ZIP geh bei mir schlecht. Und per HttpClient() bekomme ich ja auch das Original-Datum, das ich dann nach der Übertragung manuell setzen kann.

Jan