This example shows how you can download individual files from a library item to your local file system.
This example uses the steps that are described in the Download Files to a Local System from a Library Item procedure.
... using System; using System.IO; using vmware.content; using vmware.content.library; using vmware.content.library.item; using vmware.content.library.item.downloadsession; // Access the DownloadSession service. var downloadSessionService = ServiceManager.VapiConnection.GetService<DownloadSession>(); // Create a new download session model. var downloadSessionModel = new DownloadSessionModel(); downloadSessionModel.SetLibraryItemId(libItem.GetId()); var downloadSessionId = downloadSessionService.Create(Guid.NewGuid().ToString(),downloadSessionModel); var httpClient = new HttpClient(true); // Access the File service and retrieve the files you want to export. var downloadFileService = ServiceManager.VapiConnection.GetService<vmware.content.library.item.downloadsession.File>(); for (var downloadFileInfo in downloadFileService.List(downloadSessionId)) { // Make sure all files are in prepared state before you precede with the downloading operation downloadFileService.Prepare(downloadSessionId, downloadFileInfo.GetName(), vmware.content.library.item.downloadsession.FileTypes.EndpointType.HTTPS); long timeOut = 360; long endTime = DateTime.Now.Millisecond + timeOut * 1000; Thread.sleep(5000); var expectedStatus =vmware.content.library.item.downloadsession.File.PrepareStatus.PREPARED; downloadFileInfo = downloadFileService.Get(downloadSessionId,downloadFileInfo.GetName()); var currentStatus = downloadFileInfo.GetStatus(); if (currentStatus == expectedStatus) { // When the files are prepared, you can retrieve the download information for each file. downloadFileInfo = downloadFileService.Get(downloadSessionId, downloadFileInfo.GetName()); var downloadUrl = downloadFileInfo.GetDownloadEndpoint().GetUri().ToString(); // Execute an HTTP GET request and pass the URLs to the endpoints of the download files. using(var inputStream = httpClient.DownloadFile(downloadUrl)) { var tmpDirInfo = Directory.CreateDirectory("tmp"); var fullLocalPath = Path.Combine(tmpDirInfo.FullName, downloadFileInfo.GetName()); using(var localFile = File.Create(fullLocalPath)) { // Copy the files to the directory on your machine inputStream.CopyTo(localFile); } } } else { while (endTime > DateTime.Now.Millisecond) { downloadFileInfo = downloadFileService.Get(downloadSessionId, downloadFileInfo.GetName()); currentStatus = downloadFileInfo.GetStatus(); if (currentStatus == expectedStatus) { return; } else if (currentStatus == vmware.content.library.item.downloadsession.File.PrepareStatus.ERROR) { Console.WriteLine("DownloadSession Info : " + downloadSessionService.Get(downloadSessionId)); throw new Exception("Error while waiting for download file status to be PREPARED..."); } } } }