Mittwoch, 12. November 2008

Anzeigen eines Bildes, daß unter Notizen abgelegt ist...

In MS CRM werden Dokumente, die ich an ein Objekt angehängt habe im Objekt "annotation" abgelegt (wobei im Attribut objectid  die Guid des verknüpften Objekts abgespeichert wird).

Ich gehe jetzt mal davon aus, daß man sich über die Web-Services bis zur Entität, die das abgelegte Bild enthält durchgekämpft hat. 

Im Attribut filename steht nun zum Beispiel der Dateiname und mit dem Attribut isdocument kann man feststellen ob es sich um eine Datei handelt. So weit so gut... 

In documentbody steht der Inhalt der Datei und wie man schnell erkennt hat der mit dem eigentlichen Inhalt der Datei nicht mehr viel zu tun.  Das kommt daher, daß der binäre Datenstrom der Datei im Base64-Format abgelegt wurde. Wen interessiert wie das aussieht kann das im Wikipedia nachschlagen. de.wikipedia.org/wiki/Base64

Ein einfacher Einzeiler verwandelt diesen codierten String in das ürsprüngliche Byte-Array zurück: (VB.NET)

Dim bArray() as Byte = Convert.FromBase64String(base64)

Und wenn man das nun in eine ASPX Seite einbindet, kann man das Bild sogar recht einfach darstellen:

Protected Sub Page_Load(Byval sender as Object, Byval e as EventArgs ) Handles me.Load

[ ... Code um das Bild aus CRM zu laden ... ]
Dim bArray() as Byte = Convert.FromBase64String(documentbody)
response.clear()
response.contentType = "image/gif"
response.binarywrite(bArray)

End Sub

Wenn man sich hier noch ein wenig mit Parametern spielt, kann man diese aspx-Seite verwenden um dynamisch Bilder aus CRM auf Web-Seiten darzustellen.


Keine Kommentare: