So what I am doing is uploading video chunk by chunk with PutBlock. The requester sends me the video divided by 4mb chunks by per request(if the video is 17mb requester will send 5 requests, to upload 4mb chunk). I am using PutBlock method to "append" blob... When I download this video from blob it is broken... But if the requester sends me only 3mb video it is not broken(in 3mb video I mean full video and not splitted by chunks)...
Please help...
- public async Task<CloudBlockBlob> AppendBlobOnAssetAsync(UploadRequest request)
- {
- using Stream stream = new MemoryStream();
- request.File.CopyTo(stream);
- stream.Position = 0;
- var cloudBlobContainer = new CloudBlobContainer(request.InputAssetStorageUri);
- var blockBlob = cloudBlobContainer.GetBlockBlobReference(request.BlobName);
- var blockItems = new List<ListBlockItem>();
- var blockItemIds = new List<string>();
- if (request.BlockId > 0)
- {
- var blocks = await blockBlob.DownloadBlockListAsync();
- blockItems = blocks.ToList();
- blockItemIds = blockItems.Select(blockItem => blockItem.Name).ToList();
- }
- var blockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(request.BlockId.ToString(CultureInfo.InvariantCulture).PadLeft(30, '0'))); blockBlob.PutBlock(blockId, stream, null); blockItemIds.Add(blockId); blockBlob.PutBlockList(blockItemIds); return blockBlob;
- }