Entwickler-Ecke
Internet / Netzwerk - Datei-POST mit Indy
K.S.M. - So 07.03.10 18:41
Titel: Datei-POST mit Indy
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
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. ;)
Xentar - So 07.03.10 18:57
Hast du schonmal nach IdHTTP Post gesucht? Da finden sich schon einige Diskussionen zu dem Thema..
K.S.M. - 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...
Xentar - So 07.03.10 19:49
Tja.. Code?
K.S.M. - So 07.03.10 20:02
So es ist jetzt abgeschlossen. Jetzt muss nicht einmal vorher abgespiehcert werden :)
Hier mein Code:
DELPHI
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 , aURL: String ); var http: TidHttp; ms: TMemoryStream; mfd: TIdMultiPartFormDataStream; begin http := TIdHTTP.Create( nil ); try mfd := TIdMultiPartFormDataStream.Create; try ms := TMemoryStream.Create; try SaveToStream( ms ); mfd.AddObject('Upload', 'xeonlab/timetabeling-filecontainer', ms, 'upload.xtf' ); mfd.AddFormField( 'Destination', aURL ); ShowMessage( http.Post( aReservator, mfd ) ); finally ms.Free; end; finally mfd.Free; end; finally http.Free; end; end; |
PHP
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.
Xentar - So 07.03.10 20:22
K.S.M. hat folgendes geschrieben : |
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..
Und WAS da rein geschrieben werden soll, errät Delphi, oder wie?
K.S.M. - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!