Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHTTP1.Post Problem (https://www.delphipraxis.net/126907-idhttp1-post-problem.html)

IMPEGA 4. Jan 2009 18:44


idHTTP1.Post Problem
 
Hallo Leute.
Ich beschäftige mich nicht allzulange mit Delphi, bitte um Geduld.

Ich versuche den Inhalt einer Memo1 auf den Server als Datei zu laden.
Leider komme ich nicht weiter. Habe schon SuFu benutzt. Nichts passendes gefunden.
Sobald ich die Datei local erstelle und dann sende geht es einwandfrei.
Das kann ich aber nicht anwenden. Es muß direkt von der Memo uploadet und als Datei gespeichert werden.
Momentan kriege ich die Meldung: No data to read.
Drücke ich auf fortsetzen ist die Datei auf dem Server. Also sollte die Übertragung eigentlich richtig sein.
Mit den Streams habe mich irgendwie festgefahren.


Hier mein CODE
Delphi-Quellcode:
    StringList := TStringList.Create;
    Data := TIdMultiPartFormDataStream.Create;
    try
StringList.Add(Memo1.Text);
//StringList.AddObject('Test.txt',StringList); //
      Data.AddObject('userfile','txt' , StringList, 'Test.txt');
      Data.Position := 0;
       if InternetGetConnectedState(nil, 0) then
       Transfer := idHTTP1.Post('http://Meine_Adresse_mit_dem_Script/update.php', Data);
    finally
      StringList.Free;
      Data.Free;
    end;
Hier meine php Datei

Code:
<?php

   $uploaddir = getcwd() . "/test/"; // getcwd = Gets the current working directory
   $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
   
   echo '<pre>';
   
   if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
   {
      echo "Data transfer successfully.\n";
   }
   else
   {
      echo "Possible file upload attack!\n";
   }
   
?>
Fehlermeldung: No Data to read.
Ich glaube zu wissen warum es so ist, kriege aber nicht gebacken.
Ich versuche zu senden obwohl mein Stream zu Ende ist glaube ich.
Falls Jemand mir helfen könnte am besten mit ein wenig Erklärung wäre es super.
Ich lerne autodidakt, also bitte nicht schimpfen. Für die Schule bin leider zu alt.

Klaus01 4. Jan 2009 19:34

Re: idHTTP1.Post Problem
 
Guten Abend,

versuche es 'mal mit dem MemoryStream.

Delphi-Quellcode:
//StringList := TStringList.Create;
MStream := TMemoryStream.create;
Data := TIdMultiPartFormDataStream.Create;
try
  Memo1.lines.saveToStream(MStream);
  MStream.Position:=0;
  //StringList.AddObject('Test.txt',StringList); //
  Data.AddObject('userfile','txt' , MStream, 'Test.txt');
  Data.Position := 0;
  if InternetGetConnectedState(nil, 0) then
    Transfer := idHTTP1.Post('http://Meine_Adresse_mit_dem_Script/update.php', Data);
finally
  //StringList.Free;
  Data.Free;
  MStream.free;
end;
[edit] Vielleicht ist dieser Link (EidNoDataToRead) noch hilfreich.

Grüße
Klaus

IMPEGA 5. Jan 2009 17:35

Re: idHTTP1.Post Problem
 
Danke dir.
Es läuft. Das komische daran ist.
Ich habe mit MStream auch versucht gehabt. Allerdings so oft umgeschrieben daß ich kaum noch nachvollziehen kann wo ich den Fehler gemacht habe.
Ich glaube das ist das Hauptproblem: Memo1.lines.saveToStream(MStream);
Damit wird der ganze Inhalt übernommen.

Na ja. Ich bedanke mich sehr. Es hat mir sehr geholfen. Dazu noch verdammt schnell.
Danke noch Mal.


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