GetDownloadStreamAsync Method (original) (raw)

Summary

Obtains a stream asynchronously that can be used to download an item in SharePoint server.

Syntax

Parameters

sourceUri
The full URI for the source item in the SharePoint server. This value cannot be null (Nothing in VB). It must be the URI to a valid SharePoint item, for example http://server/Shared Documents/File.ext.

userState
The optional user-supplied state object that is used to identify the task that raised the DownloadCompleted event.

Example

This example will get the stream for a document asynchronously at the specified SharePoint and then get the image information using Leadtools.Codecs.RasterCodecs.

using Leadtools; using Leadtools.Codecs; using Leadtools.ImageProcessing; using Leadtools.ImageProcessing.Color; using Leadtools.SharePoint.Client; public void SharePointClientDownloadStreamAsyncExample() { // Replace SHAREPOINT_SITE_URI with a valid URL to a SharePoint site, for example // http://SiteCollection/MySite Uri siteUri = new Uri(SHAREPOINT_SITE_URI); // Replace SHAREPOINT_FOLDER_NAME with a valid folder on the site above, for example // "Documents" or "Documents\Sub Documents" string folderName = SHAREPOINT_FOLDER_NAME; // Replace SHAREPOINT_DOCUMENT_NAME with a valid document on the folder above, for example // MyDocument.tif string documentName = SHAREPOINT_DOCUMENT_NAME; // Build the full URL to the document are we going to download UriBuilder builder = new UriBuilder(siteUri); builder.Path = Path.Combine(builder.Path, folderName); builder.Path = Path.Combine(builder.Path, documentName); Uri sourceDocumentUri = builder.Uri; SharePointClient spClient = new SharePointClient(); // Optional: Set the credentials: spClient.Credentials = new NetworkCredential(USER_NAME, PASSWORD, DOMAIN); // If this is a console application demo, we might exit the program before the operation completes, // so use a wait handle to not exit this method till the opreation completes AutoResetEvent wait = new AutoResetEvent(false); // Download the SharePoint item to the temporary file asynchronously spClient.DownloadCompleted += new EventHandler<SharePointClientDownloadCompletedEventArgs>(MyDownloadStreamAsyncCompleted); spClient.GetDownloadStreamAsync(sourceDocumentUri, wait); // Wait till the operation completes wait.WaitOne(); wait.Close(); } private static void MyDownloadStreamAsyncCompleted(object sender, SharePointClientDownloadCompletedEventArgs e) { // Remove our handler SharePointClient spClient = sender as SharePointClient; spClient.DownloadCompleted -= new EventHandler<SharePointClientDownloadCompletedEventArgs>(MyDownloadStreamAsyncCompleted); if (e.Error == null && !e.Cancelled) { // All is OK, use RasterCodecs to get its info using (RasterCodecs codecs = new RasterCodecs()) { using (CodecsImageInfo imageInfo = codecs.GetInformation(e.DestinationData.Stream, true)) { // Show the image info Console.WriteLine("URL: {0}", e.SourceUri); Console.WriteLine("Pages: {0}", imageInfo.TotalPages); Console.WriteLine("Size: {0} by {1} pixels", imageInfo.Width, imageInfo.Height); Console.WriteLine("Resolution: {0} by {1} dpi", imageInfo.XResolution, imageInfo.YResolution); Console.WriteLine("Bits/Pixel: {0}", imageInfo.BitsPerPixel); } } } else { // Some error occured if (e.Error != null) Console.WriteLine(e.Error.Message); else Console.WriteLine("User cancelled"); } // Dispose the SharePoint stream if (e.DestinationData != null) { e.DestinationData.Dispose(); } // Tell whoever is listening that we are done EventWaitHandle wait = e.UserState as EventWaitHandle; wait.Set(); }