Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten senden (https://www.delphipraxis.net/69221-d5-indy-9-zlib-1-2-3-php5-komprimierte-daten-senden.html)

Codehunter 11. Mai 2006 23:13


D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten senden
 
Ich möchte mit Delphi 5 Pro und der ZLib 1.2.3 eine größere Menge ASCII-Text (XML) komprimieren, per Indy 9 TIdHTTP an einen Apache Webserver mit PHP5 senden und dort wieder entpacken.

Derzeit bekomme ich die Daten mit Delphi und ZLib komprimiert, per Indy übertragen und mit PHP empfangen ($_POST). Nur mit der Dekomprimierung mittels PHP hapert es. Ich bekomme z.B. bei gzinflate eine "data error" Fehlermeldung. Vermutlich wird irgendwo auf dem Weg vom Delphi-Programm zum PHP die Datenmenge verändert (Binärzeichen zu irgendwelchem Punycode konvertiert o.Ä.) oder die ZLib 1.2.3 für Delphi ist nicht kompatibel mit dem was die gz-Funktionen vom PHP verarbeiten können.

Ich würde auch gern mal versuchen die komprimierte Datenmenge als Datei zu übertragen doch ich habe keine Ahnung, wie man mit Indy HTTP Client eine Datei so per POST überträgt daß sie anschließend in der $_FILES-Variable vom PHP5 landet.

Hat hier schon mal jemand was Ähnliches versucht und es hinbekommen?

Codehunter 11. Mai 2006 23:32

Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
 
Danke hat sich schon erledigt. Meine Vermutung war richtig. Irgendwo auf dem Weg zum PHP wurde der komprimierte Datenstrom zerhackt. Ich habe im PHP den Inhalt der betreffenden POST-Variable durch die stripslashes-Funktion geschickt und das was da raus kam konnte gzuncompress ohne Probleme verarbeiten.

nat 12. Mai 2006 00:14

Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
 
Zitat:

Zitat von Codehunter
Ich würde auch gern mal versuchen die komprimierte Datenmenge als Datei zu übertragen doch ich habe keine Ahnung, wie man mit Indy HTTP Client eine Datei so per POST überträgt daß sie anschließend in der $_FILES-Variable vom PHP5 landet.

guck mal hier

Codehunter 12. Mai 2006 12:35

Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
 
Hmm danke das hilft mir schon mal weiter. Kennst zu zufällig eine Möglichkeit, wie man eine Datenmenge die in Stream-Form vorliegt an den TIdMultiPartFormDataStream übergeben kann als File? Damit man nicht den Umweg über eine temporäre Datei gehen muss meine ich.

nat 12. Mai 2006 14:18

Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
 
du mußt die zeile
Delphi-Quellcode:
DataStream.AddFile(fieldname, filename, 'application/octet-stream');
durch
Delphi-Quellcode:
DataStream.AddObject(fieldname, 'application/octet-stream', FS, ExtractFilename(filename));
ersetzen, wobei FS ein TFileStream-Objekt ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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