AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Indy post Problem

Ein Thema von itzgyl88 · begonnen am 19. Jul 2008 · letzter Beitrag vom 21. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2   
itzgyl88

Registriert seit: 7. Feb 2008
12 Beiträge
 
#1

Indy post Problem

  Alt 19. Jul 2008, 16:56
hallo ...
ich möchte ein bild an den bilderhost www.imagecrate.de senden. die erlaubnis des hosters habe ich dafür. jetzt stellt sich folgendes problem:

DataStream := TIdMultiPartFormDataStream.Create;
DataStream.AddFile('file', Datei, 'multipart/form-data');
stringvar := idHTTP.Post('http://www.imagecrate.de/index.php?page=upload', DataStream);
....

führe ich diesen code aus, komme ich lediglich wieder auf die seite inde.php und die datei ist weder hochgeladen, noch kann ich den link auslesen, da kein source vorhanden ist. bei anderen scripts funktioniert das jedoch super - einziger unterschied: es gibt kein "?page=upload", was daher anscheinend das problem mit indy verursacht.

handleredirects ist an und auch die request daten habe ich angepasst (host, referer ect.) - trotzdem bleibt der erfolg aus :< ...
wer kann mir helfen ? es muss doch zu machen sein ein bild dort hochzuladen und die seite mit den links zu bekommen.
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Indy post Problem

  Alt 20. Jul 2008, 20:06
Hallo.

Kenne diesen Image-Dienst nicht, daher kann ich darüber nichts berichten.

Problematisch sehe ich aber die GET/POST-Mischung (die bei manchen HTML-Formularen auch Probleme macht).

Ein GET-Request sieht so aus: http://www.example.com/script.php?foo=bar

Bei PHP hast du dann $_GET['foo'] = 'bar'.

Bei einem POST-Request werden die Daten ja nicht über die Request-URL an den Server gereicht. In PHP wäre dann die Variable $_POST['foo'] = 'bar' und nicht $_GET['foo'] gesetzt.

Führst du nun aber einen POST-Request mit http://www.imagecrate.de/index.php?page=upload durch, hast du GET und POST in einem. Ich weiß nicht, ob Indy oder der Server damit durcheinander kommen. Wie sieht es bei dem Image-Dienst aus? Machen die in ihren HTML-Formular das selbe?

Probiere doch mal, page=upload als POST anstelle von GET mitzusenden. Du würdest also ein POST-Request an http://www.imagecrate.de/index.php senden.

Wenn das nicht geht, lade dir einen Packet-Logger (ich empfehle SmartSniff = Freeware) herunter, starte das Logging (vorher internetaktive Programme wie ICQ, Outlook schließen) und poste ein Bild über den Browser. Schau dir dann mal genau das Datenpaket an und speichere es. Wie sieht das Request genau aus? Wie sieht die Response aus? (Enthält das Response-Paket ggf. eine HTTP-Redirect Zeile? Sniffe ggf. auch den Datentransfer deines (bisher nicht funktionierenden) Programmes und vergleiche es mit dem Soll-Ergebnis des Browser-Uploads. Du siehst bestimmt schnell, woran es liegen könnte und wo Unterschiede sind.

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#3

Re: Indy post Problem

  Alt 20. Jul 2008, 21:05
Hi.

Zitat von itzgyl88:
auch die request daten habe ich angepasst (host, referer ect.)
Dort liegt selten die Fehlerquelle. In meinen bisherigen Programmen, die POST-Requests gesendet haben (und das sind einige), brauchte ich nie diese Informationen mitzuschicken.


Hänge aber mal ein
DataStream.AddFormField('upload', '1'); an. Das wird zumindest beim manuellen Senden mitgeschickt.

Gruß, Björn
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Indy post Problem

  Alt 20. Jul 2008, 21:11
Zitat von Björn Ole:
Dort liegt selten die Fehlerquelle.
Halb-Richtig. Die Angabe "Referer" wird zwar selten geprüft, aber "Host" ist wichtig bei Servern mit vielen Domains (z.B. Confixx). Ein Confixx-System kennt bei einer eingehenden GET/POST Anfrage seine eigenen Domains nicht, weswegen "Host" eine wichtige Angabe ist.

Allgemein sollte man aber die künstliche Anfrage möglichst realitätsgetreu (siehe TCP/IP-Sniffer Hinweis) gestalten, falls sich auf der Serverseite die Sicherheits-/SPAM-Vorkehrungen verschärfen.

Zitat von Björn Ole:
Hänge aber mal ein
DataStream.AddFormField('upload', '1'); an.
Ja, das kann auch wichtig sein. Kleiner Hinweis noch: Der "Senden"-Button hat meistens auch einen Namen, dessen Wert als "1" ebenfalls mitgesendet wird.

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
itzgyl88

Registriert seit: 7. Feb 2008
12 Beiträge
 
#5

Re: Indy post Problem

  Alt 20. Jul 2008, 21:33
Hallo.

Zitat von Björn Ole:
Hänge aber mal ein
DataStream.AddFormField('upload', '1'); an. Das wird zumindest beim manuellen Senden mitgeschickt.
Zitat von blackdrake:
Kleiner Hinweis noch: Der "Senden"-Button hat meistens einen auch Namen, dessen Wert als "1" ebenfalls mitgesendet wird.
Beides habe ich ohne Erfolg probiert. Ich gehe davon aus, dass es dieses POST / GET Problem sein wird. Allerdings habe ich auch probiert page=upload im POST zu übergeben, was keinen Erfolg brachte.

Ich werde mir morgen früh den Sniffer besorgen und mal sehen, ob ich weiter komme.
Danke für die Hilfe

Gruß.
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#6

Re: Indy post Problem

  Alt 20. Jul 2008, 22:01
Habs hinbekommen.
Der Server mag als ContentType wohl kein 'multipart/form-data', von wegen nicht unterstütztes Dateiformat.
Nimm einfach 'image/jpeg', dann gehts.
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Indy post Problem

  Alt 20. Jul 2008, 22:02
Und wenn es kein JPEG ist (sondern PNG, GIF)? Vielleicht hat Indy kein Filename mitgegeben, mitdessen der Server die Erweiterung ".jp(e)g" ablesen konnte?
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#8

Re: Indy post Problem

  Alt 20. Jul 2008, 22:13
Zitat von blackdrake:
Und wenn es kein JPEG ist (sondern PNG, GIF)?
Dann sendet er 'image/png' oder 'image/gif'. Wo liegt das Problem?
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Indy post Problem

  Alt 20. Jul 2008, 22:16
Zitat von Björn Ole:
Wo liegt das Problem?
An der Universalität sowie der antistatischen Programmierung. Wenn das HTML-Formular (der Browser) mit "multipart/form-data" Erfolg hat, sollte dieses universelle MIME-Format auch verwendet werden - man sollte zumindestens versuchen, es so hinzubekommen, wenn es geht.
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#10

Re: Indy post Problem

  Alt 21. Jul 2008, 01:21
Wer sagt, dass der Browser 'multipart/form-data' sendet?

Habe eben ein gif hochgeladen und es wurde 'image/gif' gesendet, allgemein lässt sich höchstwahrscheinlich also sagen 'image/' + erlaubter Dateityp. Dieses Verhalten ist auch das einzig (mir) einleuchtende, denn wie sonst soll der Server überprüfen, ob es sich bei dem gesendeten Inhalt um ein erlaubtes Dateiformat handelt?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:05 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