public byte[] Zip(TemplateModel model) { using (var memoryStream = new MemoryStream()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { var type = model.GetType(); var properties = type.GetProperties(); foreach (var propery in properties) { var name = propery.Name; if (name == "Chapter" || name == "TemplateId") { continue; } name = name.Contains("ImgUrl") ? $"{name}.jpg" : $"{name}.txt"; var entry = archive.CreateEntry(name); if (!name.Contains("ImgUrl")) { using (var streamWriter = new StreamWriter(entry.Open(), Encoding.UTF8)) { var obj = model.GetType() .GetProperty(propery.Name) .GetValue(model); streamWriter.Write(obj); } } else { using (var e = entry.Open()) { ((IFormFile)model.GetType() .GetProperty(propery.Name) .GetValue(model)) .CopyTo(e); } } } return(memoryStream.GetBuffer()); } } }