public async Task <IActionResult> InputChunksNew(ChunksOfFiles chunksOfFiles) { await fileManager.InputChunks(chunksOfFiles); return(Ok("Chunks getting")); }
public async Task InputChunks(ChunksOfFiles chunksOfFiles) { var res = downoloadFiles.FirstOrDefault(c => c.FileId == chunksOfFiles.FileId && c.FileName == chunksOfFiles.FileName); var sameFile = await context.StoredFiles.FindAsync(c => c.FileName == chunksOfFiles.FileName); var file = await sameFile.FirstOrDefaultAsync(); if (file == null) { if (res != null) { int count = res.chunks.Count; if (count < chunksOfFiles.TotalCounts) { res.chunks.Add(chunksOfFiles); } if (count == chunksOfFiles.TotalCounts - 1) { var listofChunks = res.chunks.OrderBy(c => c.n); byte[] finalChunks = null; using (MemoryStream memory = new MemoryStream()) { foreach (var i in listofChunks) { byte[] chunks = Convert.FromBase64String(i.ChunksData); memory.Write(chunks); } finalChunks = memory.ToArray(); } await StoredFile(res.FileName, finalChunks); downoloadFiles.Remove(res); } } else { var downoloadFile = new DownoloadFile() { FileId = chunksOfFiles.FileId, FileName = chunksOfFiles.FileName, TotalCount = chunksOfFiles.TotalCounts, chunks = new List <ChunksOfFiles> { chunksOfFiles }, LastDownoloadTime = DateTime.Now, }; downoloadFiles.Add(downoloadFile); if (chunksOfFiles.TotalCounts == 1) { byte[] chunkByte = Convert.FromBase64String(chunksOfFiles.ChunksData); await StoredFile(chunksOfFiles.FileName, chunkByte); downoloadFiles.Remove(res); } } } }