Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   idhttp.post nach TIdMultiPartFormDataStream nicht mehr korrekt möglich (https://www.delphipraxis.net/173257-idhttp-post-nach-tidmultipartformdatastream-nicht-mehr-korrekt-moeglich.html)

hedie 14. Feb 2013 11:33

idhttp.post nach TIdMultiPartFormDataStream nicht mehr korrekt möglich
 
Hallo Zusammen

Ich habe ein merkwürdiges problem...

In meinem Code, poste ich Strings und Dateien an ein php script.

Für die Strings mache ich dies wie folgt:

Delphi-Quellcode:

var
  data:TStringList;
...
  data := TStringList.Create;
  data.values['value1']:=zeit;
  data.values['value2']:=farbe;
  data.values['value3']:=link;

IdHTTP1.post('http://.../meinFile.php?function=new',data);

data.free;
Dieser Code kann ich problemlos mehrmals ausführen, klappt immer...

Sobald ich jedoch folgenden Code ausgeführt habe:

Delphi-Quellcode:

var
  data: TIdMultiPartFormDataStream;
.......
  data := TIdMultiPartFormDataStream.Create;
 
  data.AddFile('upload_img_1',Form1.savepath+'\images\mini\'+filename, 'image/jpeg');
  data.AddFile('upload_img_2',Form1.savepath+'\images\large\'+filename, 'image/jpeg');

  data.Position := 0;

  IdHTTP1.post('http://.../meinFile.php?function=image',data);
 
  data.free
Funktionieren beide nicht mehr.

Beim PHP-File kommen keine Daten mehr an.

Woran kann das liegen?

Die übergebenen Variablen, Pfade, Dateinamen etc stimmen alle.
Diese sind also nicht leer. Es muss meiner Meinung nach am Post. liegen

Hoffe ihr könnt mir helfen...
Danke

hedie 14. Feb 2013 12:35

AW: idhttp.post nach TIdMultiPartFormDataStream nicht mehr korrekt möglich
 
Nochwas...

ich erhalte folgende Fehlermeldung

Code:
[14-Feb-2013 13:32:04] PHP Notice: Undefined index: value_xyz in file.php on line 45
Selbstverstädnlich für jeden übergebenen Value...

Bei Line 45 sieht der PHP Code wie folgt aus:

Code:
$link = $_POST['value_xyz'];
Es ist stets reproduziertbar.

Sobald ich das erstemal ein bild gesendet habe in meiner app, funktioniert das senden des textes nicht mehr.

App neustarten und dann gehts wieder einmal.

hedie 14. Feb 2013 13:08

AW: idhttp.post nach TIdMultiPartFormDataStream nicht mehr korrekt möglich
 
So, problem gelöst.

Ich habe in meiner Upload Funktion einfach eine neue idHTTP instanz erstellt

Delphi-Quellcode:
var
myInternet:TIDHTTP;
..
.
Nun klappt es, würde mich aber dennoch interessieren, weshalb es mit nur einer Instanz nicht geht

geskill 14. Feb 2013 19:16

AW: idhttp.post nach TIdMultiPartFormDataStream nicht mehr korrekt möglich
 
Am besten du schaust mal was du beim Aufruf von meinFile.php?function=image vom Server erhältst. (via WireShark)

Ich könnte mir vorstellen, dass eine Session/Cookie erzeugt wird, wenn meinFile.php?function=new aufgerufen wird, in welcher dann der Bearbeitungsvorgang für das/die Bilder beginnt. Beim abschließen und senden der Daten an meinFile.php?function=image wird die Sitzungsinformation dann wieder benötigt.

Wenn nun ein weiteres Bild bearbeitet werden soll, wird eine neue Sitzungsinformation erzeugt, vorher aber geprüft ob nicht schon eine existiert. Da diese schon existiert, wird auf die vorherige Sitzung umgeleitet. Normalerweise kümmert sich am Ende eines Vorgangs wahrscheinlich ein Javascript o.ä. darum dies zu bereinigen.

Du kannst ja mal folgendes Probieren:
Delphi-Quellcode:
  with myInternet do
  begin
    // Alle Headerinformationen (wie z.B. Referer) entfernen
    Request.Clear;

    // Alle Cookies entfernen
    CookieManager.CookieCollection.Clear;
  end;
Das sind alles nur Spekulationen, vielleicht liegt auch ein Fehler im PHP-Script vor (z.B. mit Browser testen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 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