Hallo zusammen,
ich möchte aus meinem Programm ein cgi Formular ausfüllen und damit ein Bild sowie ein paar Textfelder übertragen.
Unter D7 wurde das ganze mit einer abgewandelten HTTP Komponente gemacht - nun unter XE2 möchte ich das mit den
Indy Komponenten machen.
Das ganze klappt auch soweit schon ganz gut, jedoch muss ich noch mein Bild abspeichern und es dann mit AddFile hinzufügen.
Delphi-Quellcode:
Strm := TIdMultipartFormDataStream.Create;
Strm.AddFormField('ac','test');
Strm.AddFormField('prob','test test');
Strm.AddFile('file', 'C:\Bilder\testimage.jpg', 'image/jpg');
Da ich die Bilder, die ich versenden möchte, intern als Bitmap halte möchte ich nun wie gesagt ungern diese erst abspeichern müssen.
Daher habe ich versucht das Bild als Stream zu übertragen, so wie es auch schon mit den D7 Komponenten gemacht wurde.
Delphi-Quellcode:
bildstream := TMemoryStream.Create();
Image1.Picture.Bitmap.SaveToStream(bildstream);
Strm.AddObject('file', 'image/jpg', '', bildstream, 'image.jpg');
oder über
strm.AddFormField('file', 'image/jpg', '', bildstream, 'image.jpg');
beides führt jedoch dazu, dass das Formular mit
Error: Datei 'image.jpg' konnte nicht hochgeladen werden !
bzw.
nur Dateien der typen .bmp, .gif, .jpg, .kib, .png, .psd, .tga, .tif und .zip können hochgeladen werden
antwortet.
Wenn ich Wireshark richtig interpretiere wird bei den letzten beiden Aufrufen mit Hilfe des Streams der Inhalt des Bildes auch nicht mit übertragen.
Kann mir einer sagen was ich hier falsch mache?
Der Aufruf von AddFile läd das Bild ja auch in einen Stream und hängt diesen bei FFiledStream ein.
Danke schonmal