Einzelnen Beitrag anzeigen

schwarzerlotus

Registriert seit: 25. Jul 2011
22 Beiträge
 
#1

Bitmap an Formular senden mit Indy

  Alt 11. Feb 2013, 16:40
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
  Mit Zitat antworten Zitat