static public IAsset CreateAssetAndUploadSingleFile(AssetCreationOptions assetCreationOptions, string singleFilePath) { CloudMediaContext _context = CloudContextHelper.GetContext(); if (!File.Exists(singleFilePath)) { Console.WriteLine("File does not exist."); return(null); } var assetName = Path.GetFileNameWithoutExtension(singleFilePath); IAsset inputAsset = _context.Assets.Create(assetName, assetCreationOptions); var assetFile = inputAsset.AssetFiles.Create(Path.GetFileName(singleFilePath)); Console.WriteLine("Created assetFile {0}", assetFile.Name); var policy = _context.AccessPolicies.Create( assetName, TimeSpan.FromDays(30), AccessPermissions.Write | AccessPermissions.List); var locator = _context.Locators.CreateLocator(LocatorType.Sas, inputAsset, policy); Console.WriteLine("Upload {0}", assetFile.Name); assetFile.Upload(singleFilePath); Console.WriteLine("Done uploading {0}", assetFile.Name); locator.Delete(); policy.Delete(); return(inputAsset); }
public static void UploadByBlock(string manifestName, AssetCreationOptions options, string[] files) { CloudMediaContext context = CloudContextHelper.GetContext(); IIngestManifest manifest = context.IngestManifests.Create(manifestName); IAsset asset = context.Assets.Create(manifestName + "_Asset", options); IIngestManifestAsset bulkAsset = manifest.IngestManifestAssets.Create(asset, files); UploadBlobFile(manifest.BlobStorageUriForUpload, files); MonitorBulkManifest(manifest.Id); }
static public IAsset CreateAssetAndUploadMultipleFiles(AssetCreationOptions assetCreationOptions, string folderPath) { CloudMediaContext _context = CloudContextHelper.GetContext(); var assetName = "UploadMultipleFiles_" + DateTime.UtcNow.ToString(); IAsset asset = _context.Assets.Create(assetName, assetCreationOptions); var accessPolicy = _context.AccessPolicies.Create(assetName, TimeSpan.FromDays(30), AccessPermissions.Write | AccessPermissions.List); var locator = _context.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 UploadFile(string fileName, AssetCreationOptions options) { CloudMediaContext _context = CloudContextHelper.GetContext(); IAsset inputAsset = _context.Assets.CreateFromFile( fileName, options, (af, p) => { Console.WriteLine("Uploading '{0}' - Progress: {1:0.##}%", af.Name, p.Progress); }); Console.WriteLine("Asset {0} created.", inputAsset.Id); return(inputAsset); }
static void MonitorBulkManifest(string manifestID) { bool bContinue = true; if (consoleWriteLock == null) { consoleWriteLock = new object(); } while (bContinue) { CloudMediaContext context = CloudContextHelper.GetContext(); IIngestManifest manifest = context.IngestManifests.Where(m => m.Id == manifestID).FirstOrDefault(); if (manifest != null) { lock (consoleWriteLock) { Console.WriteLine("\nWaiting on all file uploads."); Console.WriteLine("PendingFilesCount : {0}", manifest.Statistics.PendingFilesCount); Console.WriteLine("FinishedFilesCount : {0}", manifest.Statistics.FinishedFilesCount); Console.WriteLine("{0}% complete.\n", (float)manifest.Statistics.FinishedFilesCount / (float)(manifest.Statistics.FinishedFilesCount + manifest.Statistics.PendingFilesCount) * 100); if (manifest.Statistics.PendingFilesCount == 0) { Console.WriteLine("Completed\n"); bContinue = false; } } if (manifest.Statistics.FinishedFilesCount < manifest.Statistics.PendingFilesCount) { Thread.Sleep(60000); } } else // Manifest is null { bContinue = false; } } }