Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy post Problem (https://www.delphipraxis.net/117514-indy-post-problem.html)

blackdrake 21. Jul 2008 00:26

Re: Indy post Problem
 
Zitat:

Zitat von Björn Ole
Wer sagt, dass der Browser 'multipart/form-data' sendet?

Der Quellcode:

Code:
<form enctype="multipart/form-data" action="index.php?page=upload" method="post">
(Ich denke, dass das auch so in den Post-Request eingeht und nicht vom Browser in image/... gewandelt wird. Man müsste ein Bild hochladen und mit einem TCP/IP-Sniffer gucken, was wirklich als Content-Type gesendet wird.

Ansonsten bestimmte ich persönlich immer auf der Serverseite mit LowerChar(ExtractFileExt($_FILE['filename'])) == [jpg, gif, jpeg, png], um welches Format es sich handelt.

Gruß
blackdrake

Björn Ole 21. Jul 2008 00:39

Re: Indy post Problem
 
Zitat:

Zitat von blackdrake
Man müsste ein Bild hochladen und mit einem TCP/IP-Sniffer gucken, was wirklich als Content-Type gesendet wird.

Habe beim Uploaden Live HTTP Headers (FF Addon) laufen lassen, hier das Ergebnis:

Zitat:

http://www.imagecrate.de/index.php?page=upload

POST /index.php?page=upload HTTP/1.1
Host: www.imagecrate.de

{...}

Content-Type: multipart/form-data; boundary=---------------------------378648515056
Content-Length: 110176
-----------------------------378648515056
Content-Disposition: form-data; name="upload"

1
-----------------------------378648515056
Content-Disposition: form-data; name="file"; filename="test.gif"
Content-Type: image/gif

BM¶«

{...}
Hab ich das richtig verstanden und der POST-Request wird als multipart/form-data gesendet, das Bild aber als image/xyz? Wenn ja, ist ja alles in Butter. 8)

itzgyl88 21. Jul 2008 11:59

Re: Indy post Problem
 
Jetzt habt ihr mich verwirrt. Ich dachte das Problem ginge jetzt ganz leicht zu lösen, indem ich den ContentType ändere - es scheint auch tatsächlich halb zu funktionieren, nur leider eben nicht ganz.

Wenn ich jetzt ein Bild hochlade, bekomme ich den source der Seite zurück, leider ohne den wichtigen Inhalt. Das sieht dann so aus:
Delphi-Quellcode:
und dazwischen sollte der Code stehen, in dem auch die Links sind. Ich habe den richtigen ContentType beachtet und auch mit dem LiveHeader FF Addon getestet .. was kann ich da noch tun ? o.O

Gruß.

Björn Ole 21. Jul 2008 13:36

Re: Indy post Problem
 
Der folgende Code liefert mir ein korrektes Ergebnis und sollte zudem "serververträglich" sein:
Delphi-Quellcode:
var
  DataStream: TIdMultiPartFormDataStream;
  Response: string;
begin
  DataStream:=TIdMultiPartFormDataStream.Create;
    try
      IdHTTP1.Request.ContentType:='multipart/form-data';
      DataStream.AddFormField('upload','1');
      DataStream.AddFile('file','C:\test.gif','image/gif');
      Response:=IdHTTP1.Post('http://www.imagecrate.de/index.php?page=upload',DataStream);
    finally
      DataStream.Free;
    end;
end;
Ergebnis (Ausschnitt)
Code:
<tr>
<td rowspan="11" valign="top" width="170"><div align="center">[url="http://www.imagecrate.de/view.php?id=2532"][img]http://www.imagecrate.de/upload/thumb/83148_test.gif[/img][/url]
[b]83148_test.gif[/b]</div></td>
<td>

itzgyl88 21. Jul 2008 14:23

Re: Indy post Problem
 
Danke, mein Fehler war anscheinend, dass ich erst die Datei zum Stream hinzugefügt hatte und danach "upload=1" ..
Was anderes konnte ich als Fehlerquelle bei mir nicht ausmachen - den Rest hatte ich so schon die ganze Zeit. :shock:

Danke!
Gruß.

Björn Ole 21. Jul 2008 15:03

Re: Indy post Problem
 
Ich hab mal in meinem Code die beiden Zeilen vertauscht und es funktionerte auch ohne Probleme. Dein Fehler muss also woanders gelegen haben. Aber hauptsache, es funktionert jetzt. :wink:

Gruß, Björn


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Seite 2 von 2     12   

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