public async Task SaveFileAsAsync(Guid blobFileId, string fileName)
        {
            List <int> chunks;

            using (var context = new FileUploadDemoContext())
                chunks = await context.Set <BlobFileChunks>().Where(x => x.BlobFileId == blobFileId).OrderBy(x => x.ChunkId).Select(x => x.ChunkId).ToListAsync();

            if (File.Exists(fileName))
            {
                File.Delete(fileName);
            }

            using (var file = File.OpenWrite(fileName))
                using (var stream = new MultiStream(GetBlobStreams(blobFileId, chunks)))
                    stream.CopyTo(file);
        }
        public async Task <string> ProcessFileAsync(Guid blobFileId)
        {
            List <int> chunks;

            using (var context = new FileUploadDemoContext())
                chunks = await context.Set <BlobFileChunks>().Where(x => x.BlobFileId == blobFileId).OrderBy(x => x.ChunkId).Select(x => x.ChunkId).ToListAsync();

            var result = 0;

            using (var stream = new MultiStream(GetBlobStreams(blobFileId, chunks)))
            {
                foreach (var chunk in stream.GetByteChunks(1024))
                {
                    result = (result * 31) ^ ComputeHash(chunk);
                }
            }

            return(string.Format("File Hash Code is: {0}", result));
        }