Autor Beitrag
K.S.M.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: So 07.03.10 18:41 
Hallo Delphi-Forum :)

Ich habe ein Problem, und zwar möchte ich gerne eine binäre Datei mithilfe eines Posts und TidHTTP uploaden. Sie sollte dann in PHP mit
ausblenden Quelltext
1:
2:
3:
4:
5:
<?PHP

  $_FILE[ 'content' ]

?>

o. ä. abgerufen werden können. Ich habe leider bisher noch keine vernünftige Lösung gefunden. Weiß jemand, wie man das machen kann oder hat eine Idee?

Liebe Grüße,
K.S.M. ;)

_________________
"Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: So 07.03.10 18:57 
Hast du schonmal nach IdHTTP Post gesucht? Da finden sich schon einige Diskussionen zu dem Thema..

_________________
PROGRAMMER: A device for converting coffee into software.
K.S.M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: So 07.03.10 19:41 
Ich hab jetzt was gefunden. Und zwar mit einem "TIdMultiPartFormDataStream". Zwar muss man dafür erst die Datei abspeichern aber es scheint zu funktionieren. Noch sauberer wäre es ja schon, wenn man nicht erst die datei abspeichern müsste...

_________________
"Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: So 07.03.10 19:49 
Tja.. Code?

_________________
PROGRAMMER: A device for converting coffee into software.
K.S.M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: So 07.03.10 20:02 
So es ist jetzt abgeschlossen. Jetzt muss nicht einmal vorher abgespiehcert werden :)

Hier mein Code:

DELPHI
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure SaveToServer( const aReservator { Die PHP-Datei die entgegennimmt }, aURL: String { Wohin die Datei verschoben werden soll } );
var
  http: TidHttp;
  ms: TMemoryStream;
  mfd: TIdMultiPartFormDataStream;
begin
  http := TIdHTTP.Create( nil );
  try
    mfd := TIdMultiPartFormDataStream.Create;
    try
      ms := TMemoryStream.Create;
      try
        // Hier wird mein Stream gefüllt.
        SaveToStream( ms );
        // Der MIME-Typ wurde von mir erfunden.
        mfd.AddObject('Upload''xeonlab/timetabeling-filecontainer', ms, 'upload.xtf' );
        mfd.AddFormField( 'Destination', aURL );
        // Hier wird gepostet
        ShowMessage( http.Post( aReservator, mfd ) );
      finally
        ms.Free;
      end;
    finally
      mfd.Free;
    end;
  finally
    http.Free;
  end;
end;


PHP
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<?PHP
    
  if ( isset($_FILES["Upload"]) && isset($_POST["Destination"]) ) {
    move_uploaded_file( $_FILES["Upload"]['tmp_name'], $_POST["Destination"] );
    echo 'Upload von "'. $_POST["Destination"] .'" ('.$_FILES["Upload"]["type"].') erfolgreich.';
  }

?>


Ich hoffe es hilft noch jemandem ;)
Liebe Grüße,
K.S.M.

_________________
"Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"


Zuletzt bearbeitet von K.S.M. am So 07.03.10 20:35, insgesamt 2-mal bearbeitet
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: So 07.03.10 20:22 
user profile iconK.S.M. hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt wird nicht mal mehr

Hier fehlt die hälfte von nem Satz..

Zu deinem Code: Schau dir mal bitte an, wie man einen MemoryStream bedient..
ausblenden Delphi-Quelltext
1:
Write(ms);					

Und WAS da rein geschrieben werden soll, errät Delphi, oder wie?

_________________
PROGRAMMER: A device for converting coffee into software.
K.S.M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: So 07.03.10 20:34 
Nein, sry, ich hab nicht den vollständigen Code eingestellt. Das ist nämlich eigentlich eine Prozedur eines Objektes. Das besitzt die Funktion "Write( aStream: TStream );" und in der wird dann der Stream gefüllt. Ich mache den Quelltext mal verständlicher.

_________________
"Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"