Какой лучший подход для этого? Я близок к правильным?
Код: Выделить всё
IActionResult GetDados()
{
var list = _itensService.GetDadosXXX().ToList();
var sourceFiles = _itensService.PrepareData(list);
byte[] bytes = null;
using (MemoryStream ms = new MemoryStream())
{
using (ZipArchive zip = new ZipArchive(ms, ZipArchiveMode.Create, true))
{
foreach(SourceFile sf in sourceFile)
{
ZipArchiveEntry zipItem = zip.CreateEntry(sf.Name + "." + sd.Extension)
using (MemoryStream fileMemoryStream = new MemoryStream(sf.FileBytes))
{
using (Stream entryStream = zipItem.Open())
{
fileMemoryStream.CopyTo(entryStream);
}
}
}
}
}
return File(FileBytes, "application/zip", ZipArchiveTest.zip");
}
< /code>
Service: < /p>
public IEnumerable PreparaData(List data)
{
List result = new List();
string archiveName = "Test_";
var mStream = new MemoryStream();
foreach(object in data)
{
var binFormatter = new BinFormatter();
binFormatter.Serialize(mStream, item);
aux++;
}
result.Add(new SourceFile { Name = archiveName, Extension = "csv", FileBytes = mStream.toArray() });
return result;
}
< /code>
sourcefile: < /p>
public class SourceFile
{
public string Name { get; set; }
public string Extension { get; set; }
public Byte[] FileBytes { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... and-zip-it