AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zuviel
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zuviel

Ein Thema von nat · begonnen am 3. Mai 2006 · letzter Beitrag vom 5. Mai 2006
Antwort Antwort
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zuviel

  Alt 3. Mai 2006, 03:03
hallo.
ich benutze folgenden code um mit TidHTTP einen html-fileupload (per post)
zu senden.

Delphi-Quellcode:
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 klappt auch wunderbar (habs local mit nem php-script getestet).
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.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 3. Mai 2006, 13:03
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.
Sven Harazim
--
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 4. Mai 2006, 01:14
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 4. Mai 2006, 05:07
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 5. Mai 2006, 21:22
Zitat von SirThornberry:
Am besten du suchst mal, da wurde auch gepostet was geändert werden muss.
was soll ich suchen??
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 5. Mai 2006, 21:39
ich hab grad mal gesucht und hab auch nicht wirklich was mit dem Zeilenumbruch gefunden. Angefangen hat es damals mit dem Thread:
http://www.delphipraxis.net/internal...?p=81171#81171
vielleicht gibts im letzten Beitrag auf Seite 2 die Lösung, hab mir den Link nie angeschaut
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#7

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 5. Mai 2006, 23:12
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:
        DataStream.AddFile('filecontent', FFiles[i], 'application/octet-stream');
        DataStream.AddFormField('german', '1');
        DataStream.AddFormField('u', 'Upload!');
dann wird die datei richtig gesendet (und das feld mit dem namen 'u' hat
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.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 5. Mai 2006, 23:15
Tritt das Problem mit dem Zeilenumbrauch auch auf wenn du die Parameter per Stringliste an die Post-Methode übergibst?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: Dateiupload mit TidHTTP.Post() senden 2bytes (#13#10) zu

  Alt 5. Mai 2006, 23:32
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:
//params = TStringList
response := http.Post(url, params);
und das funzt problemlos!
  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 11:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz