![]() |
Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zuviel
hallo.
ich benutze folgenden code um mit TidHTTP einen html-fileupload (per post) zu senden.
Delphi-Quellcode:
das klappt auch wunderbar (habs local mit nem php-script getestet).
var
DataStream: TIdMultiPartFormDataStream; ... FHTTP.Request.ContentType := 'multipart/form-data'; try DataStream := TIdMultiPartFormDataStream.Create; DataStream.AddFormField('german', '1'); DataStream.AddFormField('u', 'Upload!'); DataStream.AddFile('filecontent', filename, 'application/octet-stream'); response := FHTTP.Post(FURL, DataStream); except //... end; das einzige problem ist, dass die hochgeladene datei 2 bytes größer ist als die ursprüngliche datei. die beiden bytes sind immer #13#10 (CRLF). an dem php-script liegt es nicht, das funzt 100%ig. auf gut deutsch: indy hängt diese 2 bytes bei der anfrage einfach an. habe auch schon mit dem content-type rumgefummelt, ohne erfolg. hat jmd ne ahnung warum und wie ich das verhindern kann? benutze delphi7 und indy9. |
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
Selbst Indy ist nicht fehlerfrei. hab selbst schon ein paar Macken entfernt.
Wenn Du Dir also sicher bist, das Indy an der Stelle Mist macht (Quelltextposition und so), dann korrigier das ganze einfach mal. |
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
danke für den tipp, aber da sitze ich ja gut bei.
da kann ich mir auch selber ne routine schreiben, die mir nen http-request zusammenbastelt und versendet. da brauche ich dann indy nich mehr :( |
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
das Thema hatten wir bereits. Es liegt an der Version welche Verwendet wird. Am besten du suchst mal, da wurde auch gepostet was geändert werden muss.
|
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
Zitat:
|
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
ich hab grad mal gesucht und hab auch nicht wirklich was mit dem Zeilenumbruch gefunden. Angefangen hat es damals mit dem Thread:
![]() vielleicht gibts im letzten Beitrag auf Seite 2 die Lösung, hab mir den Link nie angeschaut |
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
nee, der nützt mir nich wirklich was (kannte den auch schon).
ich habe es grade aber selber so halbwegs gefunden. probleme macht immer das letzte feld im post, egal ob das n file is oder was anderes. wenn ich also die reihenfolge verändere
Delphi-Quellcode:
dann wird die datei richtig gesendet (und das feld mit dem namen 'u' hat
DataStream.AddFile('filecontent', FFiles[i], 'application/octet-stream');
DataStream.AddFormField('german', '1'); DataStream.AddFormField('u', 'Upload!'); ein zeilenumbruch zuviel). man könnte ja auch noch n fake-feld anfügen, dann werden alle felder richtig gesendet und nur das (unnütze) fake-feld wird mit nem umbruch zuviel gesendet. |
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
Tritt das Problem mit dem Zeilenumbrauch auch auf wenn du die Parameter per Stringliste an die Post-Methode übergibst?
|
Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu
keine ahnung, das is aber ja eigentlich auch egal, weil ich ja files mitsenden will.
da muß ich das ja über TIdMultiPartFormDataStream machen. wenn ich nur normal forms versende benutze ich immer
Delphi-Quellcode:
und das funzt problemlos!
//params = TStringList
response := http.Post(url, params); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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