Syntax
Public Sub GetDownloadStreamAsync( _
ByVal sourceUri As Uri, _
ByVal userState As Object _
)
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;
private static 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();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.SharePoint.Client
Private Shared Sub SharePointClientDownloadStreamAsyncExample()
' Replace SHAREPOINT_SITE_URI with a valid URL to a SharePoint site, for example
' http://SiteCollection/MySite
Dim siteUri As New Uri(SHAREPOINT_SITE_URI)
' Replace SHAREPOINT_FOLDER_NAME with a valid folder on the site above, for example
' "Documents" or "Documents\Sub Documents"
Dim folderName As String = SHAREPOINT_FOLDER_NAME
' Replace SHAREPOINT_DOCUMENT_NAME with a valid document on the folder above, for example
' MyDocument.tif
Dim documentName As String = SHAREPOINT_DOCUMENT_NAME
' Build the full URL to the document are we going to download
Dim builder As New UriBuilder(siteUri)
builder.Path = Path.Combine(builder.Path, folderName)
builder.Path = Path.Combine(builder.Path, documentName)
Dim sourceDocumentUri As Uri = builder.Uri
Dim spClient As 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
Dim wait As New AutoResetEvent(False)
' Download the SharePoint item to the temporary file asynchronously
AddHandler spClient.DownloadCompleted, AddressOf MyDownloadStreamAsyncCompleted
spClient.GetDownloadStreamAsync(sourceDocumentUri, wait)
' Wait till the operation completes
wait.WaitOne()
wait.Close()
End Sub
Private Shared Sub MyDownloadStreamAsyncCompleted(ByVal sender As Object, ByVal e As SharePointClientDownloadCompletedEventArgs)
' Remove our handler
Dim spClient As SharePointClient = CType(sender, SharePointClient)
RemoveHandler spClient.DownloadCompleted, AddressOf MyDownloadStreamAsyncCompleted
If IsNothing(e.Error) AndAlso Not e.Cancelled Then
' All is OK, use RasterCodecs to get its info
Using codecs As New RasterCodecs()
Using imageInfo As CodecsImageInfo = 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)
End Using
End Using
Else
' Some error occured
If Not IsNothing(e.Error) Then
Console.WriteLine(e.Error.Message)
Else
Console.WriteLine("User cancelled")
End If
End If
' Dispose the SharePoint stream
If Not IsNothing(e.DestinationData) Then
e.DestinationData.Dispose()
End If
' Tell whoever is listening that we are done
Dim wait As EventWaitHandle = CType(e.UserState, EventWaitHandle)
wait.Set()
End Sub