Sitecore 8 : Programatically Upload and Associate Image to Contact Card

Greetings Reader,

I would like to quickly write a post about programmatically uploading a Image to the media library and then associating it to the contact card

Create an upload control which allows you to upload images

[code language="csharp"] <asp:FileUpload ID="Img" runat="server" AssociatedControlID="Img" />[/code]

Programatically upload Media Item to Sitecore

[code language="csharp"] public MediaItem AddImageToMediaLibrary() { if (!Img.HasFile) return null;

var options = new Sitecore.Resources.Media.MediaCreatorOptions { AlternateText = txtName.Text, FileBased = false, IncludeExtensionInItemName = false, KeepExisting = false, Versioned = false, Destination = "/sitecore/media library/Images/Contacts/" + txtName.Text, Database = Sitecore.Configuration.Factory.GetDatabase("master") };

var filename = Server.MapPath(Img.FileName); var creator = new MediaCreator(); var mediaItem = creator.CreateFromStream(Img.PostedFile.InputStream, filename, options); PublishItem(mediaItem); return mediaItem; }[/code]

Associate the Media Item to Contact Card

[code language="csharp"]if (Tracker.Current.Contact != null){ using (new SecurityDisabler()) { var image = AddImageToMediaLibrary(); MediaItem getmediaItem = Sitecore.Context.Database.GetItem(image.ID); var stream = getmediaItem.GetMediaStream(); var memoryStream = new MemoryStream(); if (stream != null) stream.CopyTo(memoryStream); var pictureFacet = Tracker.Current.Contact.GetFacet<IContactPicture>("Picture"); pictureFacet.Picture = memoryStream.ToArray(); pictureFacet.MimeType = getmediaItem.MimeType; }}[/code]

Should you have any questions, Please comment below or tweet me.