Registriert seit: 7. Jul 2006
Ort: Bonn
26 Beiträge
|
HTTP Post-Request mit Dateiupload
9. Dez 2006, 23:33
Das senden eines POST-Request, der auch eine Datei enthält kann man die Indy-Komponenten und die Klasse im Anhang verwenden. - MsMultiPartFormData.pas in den uses-Teil aufnehmen
- eine Indy TIdHttp-Komponente mit dem Namen httpMain zur Verfügung stellen
- den folgenden Code anpassen, also die URL mit der empfangenden Datei (beispielsweise eine PHP-Datei, könnte aber natürlich auch JSP, ASP oder sonst eine Datei, die mit solchen Requests was anfangen kann sein)
- und noch den Dateinamen, der gesendet werden soll, die Klasse im Anhang kümmert sich um das Einlesen der Datei, es muss nur der Dateiname übergeben werden, das erste Argument ist der Name, mit dem die Variable übergeben wird, in PHP steht die Datei dann in $_FILES['meine_datei'] zur Verfügung, siehe dazu php.net/move_uploaded_file
- auf Wunsch an der entsprechenden Stelle weitere Formularfelder übergeben (erster Argument ist der Name und zweites der Wert)
- Fehler-Behandlung programmieren (sollte man )
Delphi-Quellcode:
var
MultiPartFormDataStream: TMsMultiPartFormDataStream;
HttpServer, Response: String;
begin
// Objekte instanzieren
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
try
// Content-Type bestimmen
httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType;
// Formular-Felder setzen, die keine Dateien sein sollen
MultiPartFormDataStream.AddFormField('EinAnderesFeld', 'dadum');
// ...
// Datei laden
MultiPartFormDataStream.AddFile('meine_datei', 'C:\autoexec.bat', '');
// diese Methode muss _vor_ dem Senden augerufen werden
MultiPartFormDataStream.PrepareStreamForDispatch;
MultiPartFormDataStream.Position := 0;
try
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
Response := httpMain.Post('http://www.microsoft.com/test.php', MultiPartFormDataStream);
except
// Upload fehlgeschlagen, entsprechend reagieren
end;
end;
finally
MultiPartFormDataStream.Free;
end;
end;
Hoffe es hilft einigen weiter und viel Erfolg damit!
|
|
Zitat
|