DIME Attachments
-
Hallo,
Vorweg:
ich bin mir durchaus dessen bewusst, dass sich diese Frage nicht direkt auf die MFC bezieht, ich mit .NET arbeitem, aber mit der .NET Sektion dieses Forums habe ich bei etwas spezifischeren Fragen keine guten Erfahrungen gemacht. Daher veruche ich es mal hier, schliesslich handelt es sich auch um Windows Programmierung in C++ und ich wäre dankbar, wenn Ihr trotzdem helfen könntet.Men Problem:
Ich will eine Web Service Methode entwickeln. Diese erhält eine SOAP Message mit einem DIME Attachment (z.B. ein GIF). Dieses GIF will ich ohne viel Aufhebens zu machen einfach "packen" und in einem Verzichnis, meinetwegen c:\Bilder, abspeichern. Nach Stundenlanger MSDN Lektüre weiss ich aber immer noch nicht, wie ich an das verflixte Attachment komme.
Als Beispiel habe ich hier eine Methode, welche das Gegenteil macht. Bei einer Clientanfrage wird ein Gif an eine Soap Message angehangen:
[System::Web::Services::WebMethod] void CreateDimedImage() { SoapContext *respContext = ResponseSoapContext::Current; DimeAttachment *dimeAttach = new DimeAttachment("image/gif", TypeFormat::MediaType,"C:\\HKI\\006.jpg"); // @ enfernt und Escape Sequenzen angeglichen respContext->Attachments->Add(dimeAttach); }
Nun habe ich ja genau das Gegenteil vor, wie verfahre ich jetzt? Meine Idee war:
[System::Web::Services::WebMethod] void RecieveATT(string senderID, DimeAttachment dAtt) { SoapContext *respContext = ResponseSoapContext::Current; Console::WriteLine(senderID); respContext->Attachments->Remove(dAtt); }
Nur habe ich mit Remove nichts gewonnen, das entfernt ja nur das Attachment und ich habe kein Handle drauf. Wonach ich suche ist eine Methode vom Typ
respContext->Attachments->SpeichereAttachmentUnter: c:\bilder
Irgendwei muss das auch gehen, sonst wäre ja das ganze mit den Attachments unsinnig, nur finde ich allen möglichen Quatsch, nur das nicht.
-
Repräsentiert das DimeAttachement, das du an deine Funktion übergibst, bereits das gesuchte?
Falls ja, vielleicht hilft ja http://www.opennetcf.org/library/OpenNETCF.Web.Services2.Dime.DimeAttachment.Stream.html
-
Das habe ich auch gesehen und damit herumprobiert, Aber ich finde den Sinn dahinter nicht ganz.
Ich versuche folegendes:
void Server003Class::RecieveIT(DimeAttachment *dAtt) { SoapContext *respContext = ResponseSoapContext::Current; FileInfo *fi = new FileInfo(dAtt->Stream); (...)
Nur leider braucht File Info an dieser STelle einen String als Argument, der den Dateinamen angibt, keinen Stream. Wenn ich schonmal auf den Dateinamen des Attachments irgendwie zugreifen könnte, wäre das bereits die halbe Miete. Nur leider schweigt sich auch die MSDN darüber aus.
-
warum machst du nicht eine debug ob der dateiname überhaupt übergeben wird.