Thema: Delphi User Upload

Einzelnen Beitrag anzeigen

RedShakal
(Gast)

n/a Beiträge
 
#1

User Upload

  Alt 29. Jul 2009, 12:08
Hallo ich hab ne kurze Frage: ich möchte in meine Map Datenbank einen "User Upload" einbauen. Darin soll der User 2 Felder kriegen:

Kartenname und Author. Zum Server wird dann folgendes gesendet:

Kartenname|Author|Datum+Zeit -> Server übernimmt weiß bescheid fürs nächste mal

Jetzt das Problem: Die Daten liegen auf einen FTP und ich will die FTP daten nicht in das Programm schreiben aus angst jemand könnte sie mit WireShark rausrippen und unfug damit machen. Ausserdem stehe ich vor dem Problem das ich gern das Datum / Uhrzeit vom Server nehmen würde, damit Clients nicht absichtlich das Datum manipulieren können lokal.

Wie stelle ich das am dümmsten an? evtl mit einem PHP script das den Upload per Parameter annimmt und auswertet? Leider kann ich kein PHP. Bin für Vorschläge offen


Edit:
Ich habe gerade diesen Lösungsansatz gefunden und werde ihn mal ausprobieren:

Zitat von Catbytes:
Wenn Du schon die Indy-Komponenten benutzt, warum nimmst Du nicht "Put"?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  PutDataStream: TStringStream;
  Datei: TFileStream;
  Stream: TStream;
begin
  if (OpenDialog1.Execute) then
    Datei := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  Stream := TStream.Create;
  Stream := Datei;
  PutDataStream := TStringStream.Create('');
  try
    IdHTTP1.Put('http://wasauchimmer.de', Stream, PutDataStream);
    Memo1.Text := PutDataStream.DataString;
  finally
    PutDataStream.Free;
    Stream.Free;
  end;
end;
In PHP sieht das ganze dann so aus, um mit PUT-Dateien zu empfangen:

Code:
/* PUT Daten kommen in den stdin Stream */
$putdata = fopen("php://stdin","r");

/* Eine Datei zum Schreiben öffnen */
$now = date("Y-m-d - H_i_s");
$fp = fopen("put/".$now.".txt","w");

/* Jeweils 1kB Daten lesen und
   in die Datei schreiben */
while ($data = fread($putdata,1024))
  fwrite($fp,$data);

/* Die Streams schließen */
fclose($fp);
fclose($putdata);
Pfad (put/) halt anpassen.
  Mit Zitat antworten Zitat