Extracting Attachment from InfoPath form using C#

The sample code for extracting attachment from submitted InfoPath form

var lstTimeSheet = new List<RelatedTimesheet>();
 foreach (var timeSheet in invoiceFormData.Summary.Timesheet)
 if (timeSheet.Attachment != null)
 var tSheet = new RelatedTimesheet();
 var b = timeSheet.Attachment;
 var nameBufferLen = b[20] * 2;
 var fileNameBufffer = new byte[nameBufferLen];
 for (var i = 0; i < nameBufferLen; i++)
 fileNameBufffer[i] = b[24 + i];

 var charFileName = Encoding.Unicode.GetChars(fileNameBufffer);
 var fileName = new string(charFileName);
 tSheet.FileName = fileName.Substring(0, fileName.Length - 1); 

 var fileContent = new byte[b.Length - (24 + nameBufferLen)];
 for (var i = 0; i < fileContent.Length; i++)
 fileContent[i] = b[24 + nameBufferLen + i];

 tSheet.Attachment = fileContent;

public class RelatedTimesheet
 public string FileName { get; set; }
 public byte[] Attachment { get; set; }

Using HTML Tags for formatting in InfoPath Rich Text Box Control


We had a requirement to format custom error messages that we were displaying in the rich text box control inside InfoPath Form.

For this we can use AppendChild method of XPathNavigator object.

For e.g. below is the html we need

The code that we need to use

XPathNavigator richTextField = domNav.SelectSingleNode(“/my:myFields/my:field4”, NamespaceManager);

richTextField.AppendChild(“<h2 xmlns=\”http://www.w3.org/1999/xhtml\”>Error Message Header</h2><p xmlns=\”http://www.w3.org/1999/xhtml\”>This is my custom <font xmlns=\”http://www.w3.org/1999/xhtml\” size=\”3\” color=\”red\”> error </font> message.</p>”);

The output

We need to define namespace for each tag used else we get exception.

The helpful post


Hope it helps..