public FileId Write(FileUploadData uploadData)
        {
            var id    = FileId.NewId();
            var path  = GetFilePath(id);
            var block = container.GetBlockBlobReference(path);

            block.Metadata[Metadata.FileId]         = id.ToString();
            block.Metadata[Metadata.ContentType]    = uploadData.ContentType;
            block.Metadata[Metadata.OriginalName]   = uploadData.OriginalName;
            block.Metadata[Metadata.DateCreatedUtc] = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);

            block.UploadFromStreamAsync(uploadData.FileStream).ConfigureAwait(false).GetAwaiter().GetResult();
            return(id);
        }
        public async Task <FileId> WriteAsync(FileUploadData uploadData, CancellationToken cancellationToken)
        {
            var id    = FileId.NewId();
            var path  = GetFilePath(id);
            var block = container.GetBlockBlobReference(path);

            block.Metadata[Metadata.FileId]         = id.ToString();
            block.Metadata[Metadata.ContentType]    = uploadData.ContentType;
            block.Metadata[Metadata.OriginalName]   = uploadData.OriginalName;
            block.Metadata[Metadata.DateCreatedUtc] = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);

            await block.UploadFromStreamAsync(uploadData.FileStream);

            return(id);
        }