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; lstTimeSheet.Add(tSheet); } }
public class RelatedTimesheet { public string FileName { get; set; } public byte[] Attachment { get; set; } }