public static IAsset CreateAssetAndUploadMultipleFiles(this CloudMediaContext cloudMediaContext, AssetCreationOptions assetCreationOptions, string folderPath) { var assetName = "UploadMultipleFiles_" + DateTime.UtcNow.ToString(); var asset = cloudMediaContext.CreateEmptyAsset(assetName, assetCreationOptions); var accessPolicy = cloudMediaContext.AccessPolicies.Create(assetName, TimeSpan.FromDays(30), AccessPermissions.Write | AccessPermissions.List); var locator = cloudMediaContext.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy); var blobTransferClient = new BlobTransferClient(); blobTransferClient.NumberOfConcurrentTransfers = 20; blobTransferClient.ParallelTransferThreadCount = 20; blobTransferClient.TransferProgressChanged += blobTransferClient_TransferProgressChanged; var filePaths = Directory.EnumerateFiles(folderPath); Console.WriteLine("There are {0} files in {1}", filePaths.Count(), folderPath); if (!filePaths.Any()) { throw new FileNotFoundException(String.Format("No files in directory, check folderPath: {0}", folderPath)); } var uploadTasks = new List<Task>(); foreach (var filePath in filePaths) { var assetFile = asset.AssetFiles.Create(Path.GetFileName(filePath)); Console.WriteLine("Created assetFile {0}", assetFile.Name); // It is recommended to validate AccestFiles before upload. Console.WriteLine("Start uploading of {0}", assetFile.Name); uploadTasks.Add(assetFile.UploadAsync(filePath, blobTransferClient, locator, CancellationToken.None)); } Task.WaitAll(uploadTasks.ToArray()); Console.WriteLine("Done uploading the files"); blobTransferClient.TransferProgressChanged -= blobTransferClient_TransferProgressChanged; locator.Delete(); accessPolicy.Delete(); return asset; }
public static IAsset CreateAssetAndUploadSingleFile(this CloudMediaContext cloudMediaContext, AssetCreationOptions assetCreationOptions, string singleFilePath) { var fileName = Path.GetFileName(singleFilePath); var assetName = fileName; // +"-" + DateTime.UtcNow.ToString("o"); var asset = cloudMediaContext.CreateEmptyAsset(assetName, assetCreationOptions); var assetFile = asset.AssetFiles.Create(fileName); //Console.WriteLine("Created assetFile {0}", assetFile.Name); var accessPolicy = cloudMediaContext.AccessPolicies.Create(assetName, TimeSpan.FromDays(3), AccessPermissions.Write | AccessPermissions.List); var locator = cloudMediaContext.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy); //Console.WriteLine("Upload {0}", assetFile.Name); assetFile.Upload(singleFilePath); //Console.WriteLine("Done uploading of {0} using Upload()", assetFile.Name); locator.Delete(); accessPolicy.Delete(); return asset; }