Autor |
Beitrag |
LittleBen
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: So 18.09.11 02:07
Hallo,
ich habe ein Memory-Stream, der als Argument in einer URL dienen soll. Das heißt: www.test.de/verarbeiten.php?einstream=derstream.
Da kam ich auf die Idee, den Stream einfach in eine hexadezimale (oder binäre?) Zahl zu wandeln und diese dann als Argument zu benutzen (später dann wieder umwandeln). Nun stellen sich die Fragen, ob das funktioniert und wenn ja, wie? Oder ob es eine andere Methode gibt, einen Stream als Argument für eine PHP-Seite zu verwenden.
Hoffe, dass Ihr viele Ideen habt!
Vielen Dank und Grüße,
Benny
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 18.09.11 04:33
Du solltest das mit TIdMultiPartFormDataStream oder so ähnlich und TIdHttp.Post machen können.
Das als GET-Parameter in die URL zu schreiben ist keine gute Idee.
|
|
LittleBen 
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: So 18.09.11 11:41
Das Problem ist, dass die Übertragung nicht im Programm statt finden soll, sondern der Link soll bereit gestellt werde.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 18.09.11 11:54
Dann würde ich das ganze einfach mit base64 codieren.
|
|
LittleBen 
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: So 18.09.11 12:01
Habe mehrere Base64 Klassen im Netzt gefunden, doch in keiner kann ich einen ganzen Stream codieren. Wie funktioniert das dann?
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 18.09.11 12:04
Lies den Stream vorher einfach in einen AnsiString ein. 
|
|
LittleBen 
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: So 18.09.11 12:11
Gerade habe ich die Unit SZCodeBaseX gefunden ( www.koders.com/delph...9E5789046.aspx?s=ftp). Dort gibt es die Funktionen Delphi-Quelltext 1: 2:
| function SZEncodeBaseXStream(sIN, sOUT: TStream; Size: integer; const Codes: String; BITS: integer; FullQuantum : integer; MIMELine: integer ): integer; function SZDecodeBaseXStream(sIN, sOUT: TStream; const Codes: String; BITS: integer): integer; | . Nur dort verstehe ich nicht, wie ich sie verwenden soll. Kannst du mir die beiden Funktionen vom groben Aufbau erklären (wofür sIN,Codes,...?).
jaenicke hat folgendes geschrieben : | Lies den Stream vorher einfach in einen AnsiString ein.  |
Eine URL darf ja im IE nur ca. 2500 Zeichen beinhalten, deshalb ist das eher keine gute Idee.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 18.09.11 12:24
Für diesen Beitrag haben gedankt: LittleBen
|
|
LittleBen 
      
Beiträge: 258
Erhaltene Danke: 4
Win 7, Mac OS
Delphi 7
|
Verfasst: So 18.09.11 12:34
|
|
jfheins
      
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: So 18.09.11 13:25
Du sollst den String ERST in einen Ansistring reinschreieben (ja, dann enthält er ungültige Zeichen) und danach dann base64 kodieren. Danach enthält er keine ungültigen Zeichen mehr.
Falls deine Daten zu lang sind, um noch in die URL zu passen ist das so oder so ein Problem. (base64 schlägt nochmal 33% auf die daten drauf...) In diesem Fall solltest du die Daten lieber per POST übertragen.
Für diesen Beitrag haben gedankt: LittleBen
|
|